Skip to content

[UPMERGE] 2.0 -> 2.1#17852

Merged
Rafikooo merged 62 commits into2.1from
upmerge/2.0_2.1
Apr 16, 2025
Merged

[UPMERGE] 2.0 -> 2.1#17852
Rafikooo merged 62 commits into2.1from
upmerge/2.0_2.1

Conversation

@SyliusBot
Copy link
Copy Markdown
Contributor

@SyliusBot SyliusBot commented Apr 9, 2025

This PR has been generated automatically.
For more details see upmerge_pr.yaml.

Remember! The upmerge should always be merged with using Merge pull request button.

In case of conflicts, please resolve them manually with usign the following commands:

git fetch upstream
gh pr checkout <this-pr-number>
git merge upstream/2.1 -m "Resolve conflicts between 2.0 and 2.1"

If you use other name for the upstream remote, please replace upstream with the name of your remote pointing to the Sylius/Sylius repository.

Once the conflicts are resolved, please run git merge --continue and push the changes to this PR.

Summary by CodeRabbit

  • New Features

    • Enhanced icon handling: the system now silently bypasses missing icons, ensuring a smoother and more reliable visual experience without disruptive error messages.
    • New methods for viewing the summary of the last order and verifying its payment state in order management.
    • New context entries for handling shipping in various test suites, improving coverage of shipping-related functionalities.
    • Introduced secure password management across multiple contexts, pages, and elements to improve password handling in tests.
    • Added dedicated contexts for checkout shipping and payment steps, modularizing checkout process testing.
    • Expanded address handling capabilities with more flexible address creation and storage options.
    • Added new end-to-end UI tests for shopping cart functionalities, including adding/removing items and inventory constraints.
  • Improvements

    • Updated wording and structure in various checkout scenarios for clarity and consistency.
    • Refactored Behat step definitions to use PHP 8 attributes for improved readability and modern syntax.
    • Streamlined checkout and cart scenarios by standardizing step phrasing and removing redundant steps.
    • Enhanced error messages in API assertions for better clarity.
    • Improved test configurations by adding relevant contexts and adjusting tags for better test coverage.
    • Refined image verification logic to throw exceptions on missing images for clearer test failures.
    • Simplified internal logic in promotion coupon assignment to handle invalid or missing coupons gracefully.

Piotr Tułacz and others added 22 commits April 4, 2025 13:40
Previously, when there were any issues related to icons — such as an
invalid, misspelled, or missing icon name (e.g.
ux_icon('tabler:brand-instagra')) — the application would throw an
IconNotFoundException, resulting in a 500 error and breaking the
rendering of components like the footer.

To prevent this issue:

- Added ignore_not_found: true to the ux_icons.yaml configuration file.
- This ensures that when an icon is missing or not found, no exception
is thrown, and the icon is simply not rendered.

Benefits:
Ensures that templates using icons render properly even if some icons
are unavailable


![image](https://github.com/user-attachments/assets/85a7a624-df36-43d8-ae6c-975ea03ad7e2)

![image](https://github.com/user-attachments/assets/2efd0271-d3a2-4026-8a0e-d7259766cdf1)


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Introduced an option to bypass errors for missing icons, enhancing
flexibility and reliability in icon management.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@SyliusBot SyliusBot requested review from a team as code owners April 9, 2025 02:30
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 9, 2025

Walkthrough

A new configuration option has been added to the ux_icons.yaml file. The change introduces an attribute ignore_not_found: true under the ux_icons section. This instructs the system to ignore cases where an icon is missing, modifying the error handling behavior for icons within the UI bundle.

Changes

File(s) Summary
src/Sylius/.../ux_icons.yaml Added ignore_not_found: true to the ux_icons section enabling error suppression for missing icons.

Sequence Diagram(s)

sequenceDiagram
  participant App as Application
  participant Config as ux_icons Config
  participant IconHandler as Icon Handler

  App->>Config: Load configuration for ux_icons
  Config-->>App: Return config with ignore_not_found=true
  App->>IconHandler: Request icon
  IconHandler-->>App: If icon is missing, return gracefully (ignore error)
Loading

Possibly related PRs

Suggested reviewers

  • GSadee

Poem

In a field of code, I hop along,
With icons missing, but nothing's wrong.
A tweak so neat, a prance of glee,
"ignore_not_found" sets my spirit free!
Hoppy coding, boundless and strong!
🐇✨

— A joyful rabbit coder

Tip

⚡💬 Agentic Chat (Pro Plan, General Availability)
  • We're introducing multi-step agentic chat in review comments and issue comments, within and outside of PR's. This feature enhances review and issue discussions with the CodeRabbit agentic chat by enabling advanced interactions, including the ability to create pull requests directly from comments and add commits to existing pull requests.
✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 9, 2025

❌ Preview Environment deleted from Bunnyshell

Available commands:

  • 🚀 /bns:deploy to redeploy the environment

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
src/Sylius/Bundle/UiBundle/Resources/config/packages/ux_icons.yaml (1)

4-4: Review Comment: Correctly Added New Configuration Option

The addition of ignore_not_found: true is correctly indented and placed as a sibling to default_icon_attributes under the ux_icons key. This change fulfills the PR objective of modifying error handling for missing icons. For enhanced clarity, consider adding an inline comment to briefly explain the intended behavior of this option, which could help future maintainers better understand its purpose.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 66e3472 and 40fe025.

📒 Files selected for processing (1)
  • src/Sylius/Bundle/UiBundle/Resources/config/packages/ux_icons.yaml (1 hunks)

GSadee and others added 2 commits April 9, 2025 06:48
…` and related scenarios) (#17816)

| Q               | A
|-----------------|-----
| Branch?         | 2.0 <!-- see the comment below -->
| Bug fix?        | no
| New feature?    | no
| BC breaks?      | no
| Deprecations? | no <!-- don't forget to update the UPGRADE-*.md file
-->
| License         | MIT

Continuation of:
- #17785
- #17782
- #17783

Until now, the checkout-related scenarios have been set up as follows:
• UI – via web actions (e.g. `Given I have a product ...` actually
triggered browser actions to prepare the initial step),
	•	API – a mix of messenger commands and API calls.

During the development of Sylius 2.0, with the introduction of dynamic
components, all scenarios involving product-related actions had to be
marked as JS to work correctly. This significantly increased build time
and reduced overall stability.

This PR focuses on decoupling the Behat architecture to unify the test
setup for both UI and API. The goal is to eliminate most JS tags, which
should lead to greater stability. Some performance improvements are
already noticeable.


This PR doesn’t yet include all refactored scenarios, but at this stage
we already observe the following performance gains:
• For non-JS scenarios, the timing is likely similar — some JS scenarios
have been converted to non-JS, but at the same time, we benefit from
faster setup thanks to the refactor (using messenger commands instead of
API calls or UI interactions to prepare tests).
• For JS scenarios executed via Chromedriver, the same applies — some
Panther scenarios have been switched to Chromedriver, and performance
remains comparable.

JS with Panther: **~30 min → ~20 min**
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5

🔭 Outside diff range comments (1)
src/Sylius/Behat/Context/Setup/CartContext.php (1)

225-263: 🛠️ Refactor suggestion

Undefined variable $email may emit PHP notice.

$email is only defined inside the instanceof ShopUserInterface
branch. When the user is an API token bearer (or any other
non‑ShopUserInterface scenario) the variable is undefined.

-        if ($this->sharedStorage->has('token') && $this->sharedStorage->has('user')) {
+        $email = null;
+        if ($this->sharedStorage->has('token') && $this->sharedStorage->has('user')) {
🧹 Nitpick comments (7)
src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (1)

37-43: Use constant‑time comparison for passwords (even in tests).

=== is fine for Behat but encourages an anti‑pattern in copy‑pasted code.
hash_equals() is the cheap, timing‑attack‑safe drop‑in.

-return $password === $this->sharedStorage->get('scenario_setup_password')
+return hash_equals($this->sharedStorage->get('scenario_setup_password'), $password)
src/Sylius/Bundle/ApiBundle/spec/Assigner/OrderPromotionCodeAssignerSpec.php (2)

47-59: Spec encourages an extra DB call for empty coupon code.

An empty string is semantically “no coupon” – the production code still
hits the repository. Avoiding the call removes useless I/O and makes the
intent clearer.

-$promotionCouponRepository->findOneBy(['code' => ''])->shouldBeCalled();
+$promotionCouponRepository->findOneBy(Argument::cetera())->shouldNotBeCalled();

61-73: Make the stub explicit for readability.

findOneBy()->willReturn(null); documents the expectation and prevents
future “strict prophecy” failures if return‑type hints change.

-        $promotionCouponRepository->findOneBy(['code' => 'invalidCode'])->willReturn(null);
+        $promotionCouponRepository
+            ->findOneBy(['code' => 'invalidCode'])
+            ->willReturn(null);
src/Sylius/Behat/Context/Api/Shop/CartContext.php (2)

75-80: Step lacks ownership validation – possible false‑positive tests.

iSeeTheSummaryOfMyPreviousCart() fetches any OrderInterface and
blindly shows it. If the order belongs to a different customer the step
will still pass, masking an ACL regression.

Consider asserting that the authenticated/guest user really owns
$cart.


323-329: Minor optimisation – reuse the response object.

The same GET is executed twice (once inside show(), once for the
assert). Cache it to avoid network noise and ease debugging.

-        Assert::same(
-            $this->shopClient->show(Resources::ORDERS, $order->getTokenValue())->getStatusCode(),
+        $response = $this->shopClient->show(Resources::ORDERS, $order->getTokenValue());
+        Assert::same(
+            $response->getStatusCode(),
src/Sylius/Behat/Context/Setup/CartContext.php (2)

177-205: Similar null‑ID risk when removing items / variants.

The same first()->getId() pattern appears twice. Guard as above or
refactor to a helper.


286-298: pickupCart($tokenValue) reuses caller’s token even when invalid.

If $tokenValue is a leftover from a deleted cart the call raises
Integrity constraint downstream. Consider always passing null here
and letting pickupCart() generate a fresh token.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 54a652c and aaccc0c.

📒 Files selected for processing (113)
  • .github/workflows/ci_e2e-mysql.yaml (1 hunks)
  • behat.yml.dist (1 hunks)
  • features/admin/inventory/managing_inventory/filtering_inventory_by_product.feature (1 hunks)
  • features/admin/securing_access_to_account_after_using_back_button_after_logging_out.feature (1 hunks)
  • features/shop/account/customer_account/address_book/editing_address.feature (1 hunks)
  • features/shop/account/customer_account/address_book/viewing_addresses_created_after_checkout.feature (1 hunks)
  • features/shop/account/customer_account/changing_password.feature (1 hunks)
  • features/shop/cart/shopping_cart/adding_product_to_cart.feature (2 hunks)
  • features/shop/cart/shopping_cart/adding_product_to_cart_with_prices_dependent_on_channel.feature (1 hunks)
  • features/shop/cart/shopping_cart/adding_product_with_discounted_catalog_price_to_cart.feature (1 hunks)
  • features/shop/cart/shopping_cart/adding_product_with_variants_with_discounted_catalog_price_to_cart.feature (1 hunks)
  • features/shop/cart/shopping_cart/adding_products_with_quantity_to_cart.feature (1 hunks)
  • features/shop/cart/shopping_cart/allowing_access_only_for_correctly_logged_in_users.feature (4 hunks)
  • features/shop/cart/shopping_cart/clearing_cart_after_logging_out.feature (1 hunks)
  • features/shop/cart/shopping_cart/e2e/adding_product_to_cart.feature (1 hunks)
  • features/shop/cart/shopping_cart/e2e/removing_cart_item.feature (1 hunks)
  • features/shop/cart/shopping_cart/e2e/ui/adding_product_to_cart_with_prices_dependent_on_channel.feature (1 hunks)
  • features/shop/cart/shopping_cart/removing_cart_item.feature (2 hunks)
  • features/shop/cart/shopping_cart/seeing_detailed_information_about_cart.feature (1 hunks)
  • features/shop/cart/shopping_cart/seeing_shipping_costs_only_when_required.feature (1 hunks)
  • features/shop/cart/shopping_cart/updating_cart_on_checkout.feature (1 hunks)
  • features/shop/checkout/addressing_order/sign_in_during_addressing_step.feature (1 hunks)
  • features/shop/checkout/paying_for_order/informing_customer_about_order_total_changes.feature (3 hunks)
  • features/shop/checkout/prices_get_updated_throughout_checkout.feature (2 hunks)
  • features/shop/checkout/seeing_order_summary/seeing_addresses_on_order_summary_page.feature (1 hunks)
  • features/shop/checkout/seeing_order_summary/seeing_addresses_on_order_summary_page_when_shipping_is_required_one_in_checkout.feature (1 hunks)
  • features/shop/checkout/seeing_order_summary/seeing_province_created_manually_on_order_summary_page.feature (1 hunks)
  • features/shop/checkout/skipping_payment_step_when_order_total_is_zero_after_applying_coupon.feature (1 hunks)
  • features/shop/inventory/cart_inventory/e2e/prevent_buying_more_products_than_available_in_a_stock.feature (2 hunks)
  • features/shop/inventory/cart_inventory/e2e/ui/prevent_buying_more_products_than_available_in_a_stock.feature (1 hunks)
  • features/shop/inventory/cart_inventory/e2e/ui/verify_inventory_quantity_when_updating_cart_summary.feature (1 hunks)
  • features/shop/inventory/cart_inventory/e2e/verify_inventory_quantity_when_updating_cart_summary.feature (1 hunks)
  • features/shop/inventory/cart_inventory/verify_inventory_quantity_when_updating_cart_summary.feature (1 hunks)
  • features/shop/inventory/checkout_inventory/validating_product_quantity_on_checkout_complete.feature (1 hunks)
  • features/shop/promotion/applying_promotion_coupon/applying_promotion_coupon_with_expiration_date.feature (1 hunks)
  • features/shop/promotion/applying_promotion_coupon/applying_promotion_coupon_with_full_percentage.feature (1 hunks)
  • features/shop/promotion/applying_promotion_coupon/applying_promotion_coupon_with_per_customer_usage_limit.feature (2 hunks)
  • features/shop/promotion/applying_promotion_coupon/applying_promotion_coupon_with_usage_limit.feature (2 hunks)
  • features/shop/promotion/applying_promotion_coupon/denying_usage_of_unexisting_promotion_coupon.feature (1 hunks)
  • features/shop/promotion/applying_promotion_coupon/e2e/applying_promotion_coupon.feature (1 hunks)
  • features/shop/promotion/applying_promotion_coupon/e2e/removing_promotion_coupon.feature (1 hunks)
  • features/shop/promotion/applying_promotion_coupon/receiving_no_discount_if_coupon_promotion_is_not_eligible.feature (1 hunks)
  • features/shop/promotion/applying_promotion_rules/reapplying_promotion_on_cart_change.feature (2 hunks)
  • features/shop/promotion/applying_promotion_rules/receiving_discount_based_on_nth_order_for_guest_customer.feature (1 hunks)
  • features/shop/promotion/complex_promotions.feature (1 hunks)
  • features/shop/promotion/receiving_discount/receiving_percentage_discount_on_shipping.feature (3 hunks)
  • features/shop/promotion/reverting_discount/reverting_previously_applied_discount_on_cart.feature (1 hunks)
  • features/shop/shipping/applying_shipping_fee/applying_correct_shipping_fee_on_order.feature (1 hunks)
  • features/shop/shipping/viewing_shipping_methods/viewing_available_shipping_methods_based_on_channel_as_a_visitor.feature (1 hunks)
  • features/shop/taxation/applying_taxes/applying_correct_taxes_for_items_with_the_same_tax_rate.feature (1 hunks)
  • features/shop/taxation/applying_taxes/applying_correct_taxes_on_visitor_cart.feature (1 hunks)
  • features/shop/taxation/applying_taxes_based_on_order_item_units_calculation_strategy/applying_correct_taxes_for_item_units_with_the_same_tax_rate.feature (1 hunks)
  • src/Sylius/Behat/Client/ApiPlatformSecurityClient.php (2 hunks)
  • src/Sylius/Behat/Context/Api/Admin/ManagingAdministratorsContext.php (3 hunks)
  • src/Sylius/Behat/Context/Api/Admin/ManagingCustomersContext.php (3 hunks)
  • src/Sylius/Behat/Context/Api/Admin/ResettingPasswordContext.php (3 hunks)
  • src/Sylius/Behat/Context/Api/Shop/CartContext.php (10 hunks)
  • src/Sylius/Behat/Context/Api/Shop/CheckoutContext.php (22 hunks)
  • src/Sylius/Behat/Context/Api/Shop/CustomerContext.php (4 hunks)
  • src/Sylius/Behat/Context/Api/Shop/LoginContext.php (5 hunks)
  • src/Sylius/Behat/Context/Api/Shop/RegistrationContext.php (3 hunks)
  • src/Sylius/Behat/Context/Cli/ChangeAdminPasswordContext.php (5 hunks)
  • src/Sylius/Behat/Context/Setup/AdminUserContext.php (3 hunks)
  • src/Sylius/Behat/Context/Setup/CartContext.php (7 hunks)
  • src/Sylius/Behat/Context/Setup/CatalogPromotionContext.php (1 hunks)
  • src/Sylius/Behat/Context/Setup/Checkout/AddressContext.php (2 hunks)
  • src/Sylius/Behat/Context/Setup/Checkout/PaymentContext.php (1 hunks)
  • src/Sylius/Behat/Context/Setup/Checkout/ShippingContext.php (1 hunks)
  • src/Sylius/Behat/Context/Setup/CustomerContext.php (3 hunks)
  • src/Sylius/Behat/Context/Setup/PaymentContext.php (3 hunks)
  • src/Sylius/Behat/Context/Setup/ProductContext.php (5 hunks)
  • src/Sylius/Behat/Context/Setup/PromotionContext.php (4 hunks)
  • src/Sylius/Behat/Context/Setup/UserContext.php (5 hunks)
  • src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (1 hunks)
  • src/Sylius/Behat/Context/Ui/Admin/ManagingCustomersContext.php (2 hunks)
  • src/Sylius/Behat/Context/Ui/Shop/CartContext.php (5 hunks)
  • src/Sylius/Behat/Context/Ui/Shop/Checkout/CheckoutCompleteContext.php (7 hunks)
  • src/Sylius/Behat/Context/Ui/Shop/Checkout/CheckoutThankYouContext.php (3 hunks)
  • src/Sylius/Behat/Context/Ui/Shop/Checkout/RegistrationAfterCheckoutContext.php (2 hunks)
  • src/Sylius/Behat/Context/Ui/Shop/CheckoutContext.php (2 hunks)
  • src/Sylius/Behat/Context/Ui/Shop/ProductContext.php (2 hunks)
  • src/Sylius/Behat/Context/Ui/Shop/RegistrationContext.php (3 hunks)
  • src/Sylius/Behat/Element/Admin/Customer/FormElement.php (2 hunks)
  • src/Sylius/Behat/Element/Shop/Account/RegisterElement.php (3 hunks)
  • src/Sylius/Behat/Element/Shop/Account/RegisterElementInterface.php (1 hunks)
  • src/Sylius/Behat/Page/Admin/Account/LoginPage.php (2 hunks)
  • src/Sylius/Behat/Page/Admin/Account/ResetPasswordPage.php (1 hunks)
  • src/Sylius/Behat/Page/Admin/Administrator/CreatePage.php (1 hunks)
  • src/Sylius/Behat/Page/Admin/Administrator/FormAwareTrait.php (2 hunks)
  • src/Sylius/Behat/Page/Shop/Account/ChangePasswordPage.php (2 hunks)
  • src/Sylius/Behat/Page/Shop/Account/LoginPage.php (2 hunks)
  • src/Sylius/Behat/Page/Shop/Account/ResetPasswordPage.php (2 hunks)
  • src/Sylius/Behat/Page/Shop/Checkout/AddressPage.php (3 hunks)
  • src/Sylius/Behat/Page/Shop/Product/ShowPage.php (1 hunks)
  • src/Sylius/Behat/Resources/config/services/contexts/api/admin.xml (1 hunks)
  • src/Sylius/Behat/Resources/config/services/contexts/cli.xml (1 hunks)
  • src/Sylius/Behat/Resources/config/services/contexts/setup.xml (3 hunks)
  • src/Sylius/Behat/Resources/config/services/elements/admin.xml (1 hunks)
  • src/Sylius/Behat/Resources/config/services/elements/shop.xml (1 hunks)
  • src/Sylius/Behat/Resources/config/services/pages/admin/account.xml (1 hunks)
  • src/Sylius/Behat/Resources/config/services/pages/admin/admin_user.xml (1 hunks)
  • src/Sylius/Behat/Resources/config/services/pages/shop/account.xml (2 hunks)
  • src/Sylius/Behat/Resources/config/services/pages/shop/checkout.xml (1 hunks)
  • src/Sylius/Behat/Resources/config/suites/api/account/address_book.yml (1 hunks)
  • src/Sylius/Behat/Resources/config/suites/api/inventory/checkout_inventory.yaml (1 hunks)
  • src/Sylius/Behat/Resources/config/suites/ui/account/address_book.yml (1 hunks)
  • src/Sylius/Behat/Resources/config/suites/ui/inventory/checkout_inventory.yml (1 hunks)
  • src/Sylius/Behat/Service/Factory/AddressFactory.php (2 hunks)
  • src/Sylius/Behat/Service/Factory/AddressFactoryInterface.php (1 hunks)
  • src/Sylius/Bundle/ApiBundle/Assigner/OrderPromotionCodeAssigner.php (2 hunks)
  • src/Sylius/Bundle/ApiBundle/Modifier/OrderAddressModifier.php (1 hunks)
  • src/Sylius/Bundle/ApiBundle/Tests/Application/src/Tests/DisablingDocumentationTest.php (0 hunks)
  • src/Sylius/Bundle/ApiBundle/spec/Assigner/OrderPromotionCodeAssignerSpec.php (3 hunks)
💤 Files with no reviewable changes (1)
  • src/Sylius/Bundle/ApiBundle/Tests/Application/src/Tests/DisablingDocumentationTest.php
✅ Files skipped from review due to trivial changes (17)
  • features/shop/account/customer_account/address_book/editing_address.feature
  • features/shop/cart/shopping_cart/adding_product_with_variants_with_discounted_catalog_price_to_cart.feature
  • features/shop/account/customer_account/changing_password.feature
  • behat.yml.dist
  • features/admin/inventory/managing_inventory/filtering_inventory_by_product.feature
  • features/admin/securing_access_to_account_after_using_back_button_after_logging_out.feature
  • src/Sylius/Bundle/ApiBundle/Modifier/OrderAddressModifier.php
  • features/shop/checkout/paying_for_order/informing_customer_about_order_total_changes.feature
  • features/shop/checkout/addressing_order/sign_in_during_addressing_step.feature
  • features/shop/cart/shopping_cart/e2e/adding_product_to_cart.feature
  • src/Sylius/Behat/Context/Setup/CatalogPromotionContext.php
  • src/Sylius/Behat/Resources/config/services/contexts/api/admin.xml
  • features/shop/promotion/applying_promotion_rules/reapplying_promotion_on_cart_change.feature
  • features/shop/cart/shopping_cart/e2e/removing_cart_item.feature
  • features/shop/inventory/checkout_inventory/validating_product_quantity_on_checkout_complete.feature
  • features/shop/shipping/applying_shipping_fee/applying_correct_shipping_fee_on_order.feature
  • features/shop/promotion/applying_promotion_coupon/e2e/removing_promotion_coupon.feature
🚧 Files skipped from review as they are similar to previous changes (13)
  • src/Sylius/Behat/Client/ApiPlatformSecurityClient.php
  • features/shop/checkout/prices_get_updated_throughout_checkout.feature
  • features/shop/promotion/receiving_discount/receiving_percentage_discount_on_shipping.feature
  • src/Sylius/Behat/Service/Factory/AddressFactoryInterface.php
  • src/Sylius/Behat/Context/Ui/Shop/ProductContext.php
  • src/Sylius/Behat/Context/Setup/Checkout/PaymentContext.php
  • src/Sylius/Behat/Resources/config/services/contexts/setup.xml
  • features/shop/cart/shopping_cart/allowing_access_only_for_correctly_logged_in_users.feature
  • src/Sylius/Behat/Context/Setup/ProductContext.php
  • src/Sylius/Behat/Context/Ui/Shop/CheckoutContext.php
  • src/Sylius/Behat/Context/Setup/Checkout/AddressContext.php
  • src/Sylius/Behat/Context/Ui/Shop/CartContext.php
  • src/Sylius/Behat/Context/Ui/Shop/Checkout/CheckoutCompleteContext.php
🧰 Additional context used
🧬 Code Graph Analysis (19)
src/Sylius/Behat/Page/Shop/Checkout/AddressPage.php (4)
src/Sylius/Behat/Page/Shop/Page.php (1)
  • Page (20-65)
src/Sylius/Behat/Service/DriverHelper.php (1)
  • DriverHelper (22-40)
src/Sylius/Behat/Page/SymfonyPage.php (1)
  • getElement (22-27)
src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (1)
  • retrieveSecurePassword (45-52)
src/Sylius/Behat/Page/Admin/Administrator/CreatePage.php (3)
src/Sylius/Behat/Page/Shop/Page.php (1)
  • Page (20-65)
src/Sylius/Behat/Element/Admin/Customer/FormElement.php (1)
  • __construct (32-38)
src/Sylius/Behat/Element/Shop/Account/RegisterElement.php (1)
  • __construct (28-35)
src/Sylius/Behat/Context/Ui/Shop/Checkout/RegistrationAfterCheckoutContext.php (1)
src/Sylius/Behat/Context/Ui/Shop/RegistrationContext.php (3)
  • When (97-101)
  • When (103-107)
  • When (117-121)
src/Sylius/Behat/Context/Api/Admin/ManagingCustomersContext.php (1)
src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (1)
  • replaceWithSecurePassword (23-35)
src/Sylius/Behat/Context/Setup/UserContext.php (1)
src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (3)
  • replaceWithSecurePassword (23-35)
  • retrieveSecurePassword (45-52)
  • confirmSecurePassword (37-43)
src/Sylius/Behat/Context/Api/Shop/LoginContext.php (1)
src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (3)
  • retrieveSecurePassword (45-52)
  • replaceWithSecurePassword (23-35)
  • confirmSecurePassword (37-43)
src/Sylius/Behat/Context/Api/Shop/CustomerContext.php (1)
src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (3)
  • retrieveSecurePassword (45-52)
  • replaceWithSecurePassword (23-35)
  • confirmSecurePassword (37-43)
src/Sylius/Behat/Context/Setup/AdminUserContext.php (1)
src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (1)
  • replaceWithSecurePassword (23-35)
src/Sylius/Behat/Page/Shop/Account/ResetPasswordPage.php (4)
src/Sylius/Behat/Page/Shop/Page.php (1)
  • Page (20-65)
src/Sylius/Behat/Page/SymfonyPage.php (2)
  • SymfonyPage (20-33)
  • getElement (22-27)
src/Sylius/Behat/Page/Admin/Account/LoginPage.php (1)
  • __construct (26-33)
src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (2)
  • replaceWithSecurePassword (23-35)
  • confirmSecurePassword (37-43)
src/Sylius/Behat/Page/Admin/Administrator/FormAwareTrait.php (1)
src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (1)
  • replaceWithSecurePassword (23-35)
src/Sylius/Behat/Context/Ui/Shop/Checkout/CheckoutThankYouContext.php (1)
src/Sylius/Behat/Context/Api/Shop/CheckoutContext.php (6)
  • Then (652-666)
  • Then (836-841)
  • Then (911-915)
  • Then (992-1008)
  • Then (1128-1132)
  • Then (1254-1264)
src/Sylius/Behat/Context/Api/Shop/RegistrationContext.php (1)
src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (1)
  • replaceWithSecurePassword (23-35)
src/Sylius/Behat/Element/Admin/Customer/FormElement.php (2)
src/Sylius/Behat/Element/Shop/Account/RegisterElement.php (1)
  • __construct (28-35)
src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (1)
  • replaceWithSecurePassword (23-35)
src/Sylius/Behat/Context/Api/Admin/ManagingAdministratorsContext.php (1)
src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (1)
  • replaceWithSecurePassword (23-35)
src/Sylius/Behat/Context/Ui/Admin/ManagingCustomersContext.php (5)
src/Sylius/Behat/Context/Ui/Shop/Checkout/RegistrationAfterCheckoutContext.php (1)
  • When (45-49)
src/Sylius/Behat/Context/Ui/Shop/RegistrationContext.php (3)
  • When (97-101)
  • When (103-107)
  • When (117-121)
src/Sylius/Behat/Context/Api/Admin/ManagingAdministratorsContext.php (1)
  • iSpecifyItsPasswordAs (109-114)
src/Sylius/Behat/Context/Api/Admin/ManagingCustomersContext.php (1)
  • iSpecifyItsPasswordAs (145-150)
src/Sylius/Behat/Context/Ui/Admin/ManagingAdministratorsContext.php (1)
  • iSpecifyItsPasswordAs (129-132)
src/Sylius/Behat/Page/Admin/Account/LoginPage.php (4)
src/Sylius/Behat/Page/SymfonyPage.php (1)
  • SymfonyPage (20-33)
src/Sylius/Behat/Page/Shop/Account/LoginPage.php (2)
  • LoginPage (24-74)
  • __construct (28-36)
src/Sylius/Behat/Page/Admin/Account/ResetPasswordPage.php (1)
  • __construct (27-34)
src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (1)
  • retrieveSecurePassword (45-52)
src/Sylius/Behat/Context/Cli/ChangeAdminPasswordContext.php (1)
src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (2)
  • replaceWithSecurePassword (23-35)
  • retrieveSecurePassword (45-52)
src/Sylius/Behat/Context/Setup/CustomerContext.php (1)
src/Sylius/Behat/Context/Ui/Admin/Helper/SecurePasswordTrait.php (1)
  • replaceWithSecurePassword (23-35)
src/Sylius/Bundle/ApiBundle/spec/Assigner/OrderPromotionCodeAssignerSpec.php (1)
src/Sylius/Bundle/ApiBundle/Assigner/OrderPromotionCodeAssigner.php (1)
  • assign (30-44)
🪛 YAMLlint (1.35.1)
.github/workflows/ci_e2e-mysql.yaml

[warning] 204-204: too many spaces after hyphen

(hyphens)

⏰ Context from checks skipped due to timeout of 90000ms (590)
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.2, PostgreSQL 16.4
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter winzou_state_machine
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^7.1
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^6.4
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^7.1
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^6.4
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.2, PostgreSQL 16.4
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter winzou_state_machine
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^7.1
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^6.4
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^7.1
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^6.4
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.2, PostgreSQL 16.4
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter winzou_state_machine
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^7.1
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^6.4
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^7.1
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^6.4
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.2, PostgreSQL 16.4
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter winzou_state_machine
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^7.1
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^6.4
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^7.1
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^6.4
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.2, PostgreSQL 16.4
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter winzou_state_machine
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^7.1
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^6.4
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^7.1
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^6.4
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.2, PostgreSQL 16.4
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter winzou_state_machine
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^7.1
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^6.4
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^7.1
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^6.4
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.2, PostgreSQL 16.4
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter winzou_state_machine
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^7.1
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^6.4
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^7.1
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^6.4
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.2, PostgreSQL 16.4
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter winzou_state_machine
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^7.1
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^6.4
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^7.1
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^6.4
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.2, PostgreSQL 16.4
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter winzou_state_machine
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^7.1
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^6.4
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^7.1
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^6.4
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.2 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.2, PostgreSQL 16.4
  • GitHub Check: End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter winzou_state_machine
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.3, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^7.1, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 11.4.3, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] End-to-end tests (MariaDB) / Non-JS, PHP 8.2, Symfony ^6.4, MariaDB 10.11.9, State Machine Adapter symfony_workflow
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^7.1
  • GitHub Check: [2.0] Packages / PHP 8.3, Symfony ^6.4
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^7.1
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] Packages / PHP 8.2, Symfony ^6.4
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: Frontend / NodeJS 20.x
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Panther, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.3, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^7.1 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.4, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / JS with Chromedriver, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (MySQL) / Non-JS, PHP 8.2, Symfony ^6.4 (test_cached), MySQL 8.0, Twig ^3.3
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.3, Symfony ^6.4, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^7.1, PostgreSQL 14.13
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 16.4
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 15.8
  • GitHub Check: [2.0] End-to-end tests (PostgreSQL) / Non-JS, PHP 8.2, Symfony ^6.4, PostgreSQL 14.13
🔇 Additional comments (203)
.github/workflows/ci_e2e-mysql.yaml (2)

199-202: Approve readability improvements for Chromedriver Behat run.

Converting the chained one‑liners into a multiline shell block with explicit backslashes makes the retry logic clear and maintains the same behavior.


205-209: Approve readability improvements for flaky (@failing) scenarios.

The multiline format for the @failing tag mirrors the main Chromedriver step and the continue-on-error: true setting is correctly scoped to handle known flakiness.

features/shop/cart/shopping_cart/seeing_detailed_information_about_cart.feature (1)

11-20: Test structure improvements align with BDD best practices

The changes to the scenario steps follow good BDD practices by:

  1. Properly separating setup conditions (Given) from actions being tested (When)
  2. Using past tense in Given steps ("I added" instead of "I add")
  3. Adding explicit verification steps like "When I check items in my cart"
  4. Removing the @javascript tag which can improve test speed and stability

These changes maintain the same test coverage while making the scenarios more readable and maintainable.

src/Sylius/Behat/Resources/config/suites/api/account/address_book.yml (1)

26-26: Appropriate addition of checkout context

Adding the sylius.behat.context.setup.checkout context to the address book test suite is consistent with the broader restructuring of checkout-related Behat contexts in this PR. This ensures that address book tests have access to the necessary checkout setup methods and maintains consistency across related features.

features/shop/checkout/skipping_payment_step_when_order_total_is_zero_after_applying_coupon.feature (1)

17-21: Test improvements enhance clarity and consistency

The changes to this scenario improve the test structure by:

  1. Using past tense in setup steps ("I added", "I applied") for more consistent language
  2. Properly distinguishing between setup conditions (Given) and the action being tested (When)
  3. Replacing @javascript with @no-api tag to better define the test execution context

These adjustments make the scenario more readable and align with the standardization patterns seen across other feature files in this PR.

features/shop/cart/shopping_cart/updating_cart_on_checkout.feature (1)

12-15: Improved test structure and consistency

The changes to this scenario enhance both readability and stability:

  1. Replacing the browser-specific @mink:chromedriver tag with @no-api @ui aligns with the standardization across other test files
  2. Moving the quantity change step earlier in the flow provides a more logical sequence of actions
  3. The scenario maintains the same test coverage while making the test flow clearer

These improvements contribute to a more maintainable and consistent test suite.

features/shop/taxation/applying_taxes/applying_correct_taxes_on_visitor_cart.feature (1)

28-29: Improved test step separation and clarity

The scenario has been refactored to separate the cart addressing action from checking the cart details. This change enhances test readability by clearly distinguishing between these two discrete operations, making the test flow more explicit.

src/Sylius/Behat/Resources/config/services/elements/shop.xml (1)

21-23: Injection of shared storage into registration element

The RegisterElement now receives the shared storage service as a constructor argument, which aligns with broader security enhancements in the Behat contexts. This change supports the secure password handling pattern being implemented across test components.

features/shop/cart/shopping_cart/clearing_cart_after_logging_out.feature (3)

11-11: Simplified Behat tags

The @mink:chromedriver tag has been removed, leaving just @no-api @ui. This simplification standardizes scenario annotations and reduces unnecessary driver specifications.


14-15: Explicit separation of cart actions and verification

The steps have been refactored to use past tense for the action ("I added product") and introduce a distinct verification step ("When I check the details of my cart"). This pattern improves test clarity by separating actions from verifications.


17-17: Improved test step semantics

Changing "And I see the summary" to "When I see the summary" improves the semantic flow of the test by properly using "When" for actions and "Then" for assertions. This makes the Gherkin more aligned with BDD best practices.

src/Sylius/Behat/Context/Setup/CustomerContext.php (3)

18-18: Added SecurePasswordTrait for enhanced password handling

The import of SecurePasswordTrait supports a more secure approach to password management in tests.


30-31: Incorporated SecurePasswordTrait into CustomerContext

Using the SecurePasswordTrait centralizes secure password handling logic, promoting consistent password management across test components.


237-237: Enhanced security with secure password replacement

The direct password assignment has been replaced with replaceWithSecurePassword method, which stores both the original password (for test scenario setup) and a more secure password in shared storage. This ensures passwords are handled securely during tests while maintaining test maintainability.

features/shop/promotion/applying_promotion_coupon/e2e/applying_promotion_coupon.feature (2)

14-14: Tag standardization looks good.

The change from @mink:chromedriver to @javascript aligns with the broader effort to standardize test annotations across the codebase, making test execution more flexible and not tied to a specific browser driver.


22-29: Great addition of test coverage for invalid coupon handling.

This new scenario properly tests an important edge case - what happens when a user applies an invalid coupon code. The test verifies three critical aspects:

  1. The user is notified about the invalid coupon
  2. The cart total remains unchanged at $100.00
  3. No discount is applied

This ensures proper error handling and user feedback for invalid coupons, enhancing the test coverage.

src/Sylius/Behat/Resources/config/services/pages/shop/checkout.xml (1)

27-27: Appropriate dependency injection for secure password handling.

Adding the shared storage dependency to the AddressPage service aligns with the broader changes to enhance secure password handling throughout the testing infrastructure. This enables the AddressPage to use the SecurePasswordTrait for better credential management in tests.

features/shop/promotion/complex_promotions.feature (2)

36-36: Step phrasing standardization looks good.

Changing "When I proceed with 'DHL' shipping method" to "When I chose 'DHL' shipping method" improves consistency with other feature files and standardizes the language used for describing shipping method selection.


38-38: Improved test specificity and clarity.

The change to assert the discount at the product level ("Black Sabbath jacket") rather than a general statement makes the test more precise and easier to debug if it fails. This provides clearer verification of the expected discount behavior.

features/shop/checkout/seeing_order_summary/seeing_province_created_manually_on_order_summary_page.feature (2)

17-17: Tag simplification looks good.

Removing the @javascript tag while keeping @api @ui aligns with the effort to standardize test annotations across feature files and avoid redundancy.


20-22: Effective simplification of checkout steps.

Consolidating multiple granular checkout steps into higher-level steps improves test readability and maintainability. The simplified steps focus on what's being tested (the presence of provinces on the summary page) rather than the detailed mechanics of the checkout process.

This approach makes the tests more resilient to minor UI changes in the checkout flow while still verifying the core functionality.

src/Sylius/Behat/Resources/config/services/pages/admin/admin_user.xml (1)

12-12: Enhances security with shared storage for password handling

This addition of the shared storage service as a constructor argument properly integrates the page with Sylius's secure password handling system. This is part of a broader improvement across Behat tests to manage passwords more securely.

features/shop/promotion/applying_promotion_coupon/applying_promotion_coupon_with_full_percentage.feature (2)

14-14: Improved tag selection for broader test coverage

Replacing browser-specific tags with the more generic @api @ui tags allows this test to be run across multiple contexts, improving test coverage and flexibility.


17-17: Enhanced step phrasing for command-based implementation

The updated phrasing "I applied the coupon" (past tense) better aligns with the command-based implementation and creates more consistent terminology across feature files.

features/shop/promotion/applying_promotion_coupon/applying_promotion_coupon_with_expiration_date.feature (3)

14-14: Improved tag selection for broader test coverage

Replacing browser-specific tags with the more generic @api @ui tags allows these tests to be run across multiple contexts, improving test coverage and flexibility.

Also applies to: 23-23


18-18: Enhanced step phrasing for command-based implementation

The updated phrasing "I applied the coupon" (past tense) better aligns with the command-based implementation and creates more consistent terminology across feature files.

Also applies to: 27-27


29-29: Simplified verification of expired coupon scenario

The test now focuses on verifying the core functionality (no discount applied) rather than UI notifications, making the test more robust and less dependent on UI implementation details.

src/Sylius/Behat/Resources/config/services/contexts/cli.xml (1)

40-40: Enhances security with shared storage for password handling

This addition of the shared storage service as a constructor argument properly integrates the CLI context with Sylius's secure password handling system. This matches the pattern used across other contexts and pages, creating a consistent approach to password management in tests.

features/shop/cart/shopping_cart/seeing_shipping_costs_only_when_required.feature (5)

17-17: Improved step definition clarity

The step has been reworded to be more explicit by specifying the exact product name and using past tense. This makes the test scenario more readable and maintainable.


21-21: Simplified test tags

The @javascript tag has been removed, leaving only @api @ui tags. This aligns with the standardization of tags across feature files, focusing on the primary test interfaces.


23-25: Improved step definitions and sequence

Steps have been rewritten to explicitly name the product being added to the cart and use past tense format. This makes the scenario easier to understand and maintain.


28-28: Standardized test tags

The @javascript tag has been removed, keeping only @api @ui which is consistent with the tag standardization across the feature files.


30-33: Enhanced step clarity and sequence

Steps have been rewritten to be more explicit and use consistent past tense. This improves readability and makes the test scenario more maintainable.

features/shop/promotion/applying_promotion_coupon/denying_usage_of_unexisting_promotion_coupon.feature (3)

14-14: Simplified test tags

The @mink:chromedriver tag has been removed, leaving only @api @ui tags. This aligns with the standardization of tags across feature files in the PR.


17-17: Improved step definition clarity

The step has been reworded to use past tense ("I applied" instead of using present tense), which is consistent with the standardization of step phrasing throughout the codebase.


19-19: Simplified assertion step

The assertion is now more direct and focuses on verifying that the cart total remains at $100.00, confirming that the invalid coupon had no effect.

features/shop/cart/shopping_cart/removing_cart_item.feature (6)

11-11: Standardized test tags

The @javascript or @mink:chromedriver tags have been removed, keeping only @api @ui. This is consistent with the tag standardization across feature files in this PR.


14-16: Improved step definition clarity and sequence

Steps have been rewritten to use consistent past tense ("I added" and "I removed") and a clear sequence with the summary check at the end. This makes the test scenario more readable and maintainable.


20-20: Standardized test tags

Tags have been simplified to @api @ui, removing any driver-specific tags, which aligns with the standardization effort throughout the codebase.


23-26: Enhanced step clarity and sequence

The steps now follow a logical sequence with cart actions first (adding products, removing a product) followed by checking the cart summary. The consistent use of past tense improves readability.


29-29: Standardized test tags

Tags have been simplified to follow the consistent pattern of using only @api @ui across feature files.


40-44: Improved step definition consistency and sequence

Steps have been rewritten using past tense and placed in a logical sequence, with the cart summary check occurring after all modifications. This makes the scenario easier to follow and maintain.

src/Sylius/Behat/Resources/config/suites/ui/account/address_book.yml (3)

15-15: Added payment transformation context

The addition of the payment transformation context (sylius.behat.context.transform.payment) enhances the test suite's ability to handle payment-related transformations in test scenarios.


18-18: Added shipping method transformation context

The addition of the shipping method transformation context (sylius.behat.context.transform.shipping_method) enables the test suite to properly transform shipping method references in test scenarios.


24-25: Enhanced checkout setup capabilities

The addition of checkout and checkout address setup contexts provides more robust support for testing scenarios that involve checkout processes and address handling, improving test coverage.

features/shop/promotion/reverting_discount/reverting_previously_applied_discount_on_cart.feature (2)

14-14: Improved test flow separation and clarity

The changes to this scenario improve the test structure by:

  1. Simplifying tags to @api @ui
  2. Using past tense for action steps ("I removed product")
  3. Adding an explicit verification step before assertions

This creates a clearer separation between actions and verifications, making the test more readable and maintainable.

Also applies to: 19-20


24-24: Consistent test pattern application

The same pattern improvements have been applied to this scenario, maintaining consistency throughout the feature file. The explicit "check the details of my cart" step creates a clear boundary between modification actions and assertions.

Also applies to: 28-29

features/shop/account/customer_account/address_book/viewing_addresses_created_after_checkout.feature (1)

16-21: Enhanced readability with higher-level steps

The scenario has been improved by:

  1. Simplifying tags to @api @ui
  2. Using more abstract, business-focused steps instead of granular implementation details

Using composite steps like "I addressed the cart" and "I chose shipping and payment methods" makes the test more readable and resilient to UI implementation changes while preserving the business intent.

features/shop/taxation/applying_taxes_based_on_order_item_units_calculation_strategy/applying_correct_taxes_for_item_units_with_the_same_tax_rate.feature (2)

40-40: Standardized test structure pattern

This scenario follows the same improvement pattern as other feature files, with simplified tags and a clearer separation between actions and verifications. The explicit cart details check provides a consistent verification point before assertions.

Also applies to: 44-44


49-49: Consistent structure for better maintainability

The same standardized pattern is applied to this scenario, ensuring consistency across all tax calculation test cases. This makes the test suite more maintainable and easier to understand for developers.

Also applies to: 53-54

src/Sylius/Behat/Context/Ui/Admin/ManagingCustomersContext.php (2)

17-17: Updated import for PHP 8 attributes

Updated the import to use Behat\Step\When for PHP 8 attributes instead of the previous annotation-based approach.


379-380: Modernized step definition with PHP 8 attributes

Converted the PHPDoc annotation to a PHP 8 attribute and added an explicit void return type. This change:

  1. Makes the code more concise and readable
  2. Leverages native PHP 8 language features
  3. Improves type safety with explicit return types
  4. Aligns with modern PHP development practices

This is part of a broader modernization effort across the codebase.

src/Sylius/Behat/Context/Ui/Shop/Checkout/RegistrationAfterCheckoutContext.php (2)

17-17: Import added for PHP 8 attribute syntax

The new import use Behat\Step\When; is added to support the PHP 8 attribute-based step definition that replaces the PHPDoc annotation style.


45-49:

Details

✅ Verification successful

Updated to PHP 8 attribute syntax for Behat step definition

The step definition has been modernized from PHPDoc @When annotation to PHP 8 attribute syntax #[When]. Additionally, the wording changed from "I specify the password as :password" to "I specify a password as :password". Note that the method no longer stores the password in shared storage, which aligns with centralized secure password handling using SecurePasswordTrait throughout the codebase.


🏁 Script executed:

#!/bin/bash
# Verify if this class uses SecurePasswordTrait or if password handling has been moved elsewhere

# Check if this class or other related registration contexts use SecurePasswordTrait
rg -A 2 "use.*SecurePasswordTrait" --type php src/Sylius/Behat/

# Check where password storage might have been moved
rg -A 5 "specifyPassword.*password" --type php src/Sylius/Behat/Element/

Length of output: 13827


Registration step modernized with PHP 8 attribute and centralized secure password handling

  • Replaced PHPDoc @When annotation with #[When('I specify a password as :password')] in
    src/Sylius/Behat/Context/Ui/Shop/Checkout/RegistrationAfterCheckoutContext.php
  • Updated the step wording from “I specify the password as :password” to “I specify a password as :password” for consistency
  • Removed manual shared‑storage writes—passwords are now passed through
    src/Sylius/Behat/Element/Shop/Account/RegisterElement.php’s
    specifyPassword() method, which invokes replaceWithSecurePassword() from SecurePasswordTrait to centralize secure handling

All changes align with the existing secure‑password pattern across Behat contexts and elements.

src/Sylius/Behat/Resources/config/services/elements/admin.xml (1)

85-87: Added shared storage injection for secure password handling

The service definition for sylius.behat.element.admin.customer.form now injects the sylius.behat.shared_storage service as a constructor argument. This change supports the use of the SecurePasswordTrait for secure password handling in Behat tests.

features/shop/inventory/cart_inventory/e2e/prevent_buying_more_products_than_available_in_a_stock.feature (3)

2-2: Simplified feature title

The feature title has been reworded to be more concise while maintaining clarity about preventing purchases that exceed available stock.


17-17: Simplified assertion step

The step has been simplified to focus only on the notification about insufficient stock, removing the verification that the user remains on the product page. This change streamlines the test to focus on the core assertion.


21-21: Changed step phrasing for consistency

Changed from "When I add" to "Given I added" to use past tense for setup steps, making a clearer distinction between setup and action phases in the scenario. This follows a broader pattern of standardizing step definitions across the codebase.

features/shop/promotion/applying_promotion_rules/receiving_discount_based_on_nth_order_for_guest_customer.feature (2)

23-23: Removed @javascript tag from scenario

The @javascript tag has been removed from this scenario, indicating it no longer requires JavaScript for execution. This simplifies test execution while maintaining the API and UI contexts.


30-32: Simplified and reordered test steps

The steps have been simplified and standardized to:

  1. Use past tense for setup steps ("I added product" instead of "I add product")
  2. Use more concise steps ("I addressed the cart" replacing multiple steps)
  3. Explicitly separate the cart details check after addressing

This improves readability and aligns with standardized step definitions across the codebase.

features/shop/cart/shopping_cart/adding_product_with_discounted_catalog_price_to_cart.feature (2)

13-20: Consistent test approach with improved step clarity

The test has been improved by:

  1. Removing the @javascript tag in favor of more specific @api @ui tags
  2. Changing step phrasing from present to past tense ("I added product" instead of "I add product")
  3. Adding an explicit "When I check the details of my cart" step to clearly separate cart modification from cart verification

This follows modern BDD best practices by clearly distinguishing between the setup phase (Given/And), action phase (When), and assertion phase (Then/And).


22-31: Consistent scenario structure across feature files

The same improvements have been applied to this scenario, making it consistent with the previous one. The change from present to past tense verbs and the explicit "check the details" step makes the test flow more logical and easier to understand.

features/shop/cart/shopping_cart/adding_products_with_quantity_to_cart.feature (1)

11-16: Improved test structure and consistent approach

The changes align with the standardization seen across other feature files:

  1. Removing @javascript tag in favor of @api @ui tags
  2. Using past tense for action steps to indicate "Given" state vs. "When" actions
  3. Adding explicit "When I check the details of my cart" step before assertions

This creates a clearer separation between test phases and improves readability.

features/shop/shipping/viewing_shipping_methods/viewing_available_shipping_methods_based_on_channel_as_a_visitor.feature (2)

18-25: Standardized test structure with improved step descriptions

The test has been refined to:

  1. Remove the @javascript tag to focus on @api @ui testing
  2. Use past tense for action steps ("I added product")
  3. Simplify the addressing step
  4. Add a clear step for the shipping phase transition ("When I want to complete the shipping step")

These changes align with similar improvements across other feature files and make the test flow more logical.


27-34: Consistent structure applied to the second scenario

The same improvements have been applied to this scenario, maintaining consistency across the feature file. The changes follow the same patterns of standardization and clarification.

features/shop/inventory/cart_inventory/e2e/ui/prevent_buying_more_products_than_available_in_a_stock.feature (2)

1-12: Well-structured new inventory test feature

This new feature file follows proper BDD structure with:

  • Clear feature description focusing on inventory constraint enforcement
  • Well-defined user story ("In order to...", "As a...", "I want to...")
  • Appropriate background setup with product and inventory configuration

The tags @cart_inventory categorize this properly within the test suite.


13-17: Properly tagged JavaScript-dependent scenario

Unlike other files where @javascript tags were removed, this scenario specifically includes the @javascript tag along with @no-api @ui. This indicates that the test specifically requires JavaScript functionality to run, which makes sense for an inventory check that likely involves dynamic UI updates.

The scenario steps are well-defined with clear assertions to verify that:

  1. Adding products below the inventory threshold works
  2. No insufficient stock notification appears
  3. The user stays on the cart summary page

This provides adequate test coverage for this inventory constraint.

features/shop/checkout/seeing_order_summary/seeing_addresses_on_order_summary_page.feature (1)

24-31: Excellent refactoring to streamline the test steps!

The changes to this scenario simplify the test by using higher-level, composite steps that make the scenario more readable while testing the same functionality. The use of steps like "I addressed the cart with..." and "I chose... shipping method and... payment method" encapsulates multiple actions into logical groups, making the test more maintainable and focused on business requirements rather than implementation details.

src/Sylius/Behat/Page/Admin/Administrator/FormAwareTrait.php (2)

16-17: Good integration of SecurePasswordTrait

Adding the SecurePasswordTrait integration provides a consistent approach to password handling across the test suite.

Also applies to: 20-21


64-64: Enhanced security for password handling in tests

Using the replaceWithSecurePassword method improves security during testing by replacing actual passwords with secure random ones while maintaining the original passwords in shared storage for reference.

features/shop/promotion/applying_promotion_coupon/applying_promotion_coupon_with_usage_limit.feature (2)

16-16: Good standardization of scenario tags

Removing the @mink:chromedriver tags while keeping @api @ui tags helps standardize the testing approach across different scenarios and aligns with the rest of the test suite.

Also applies to: 25-25, 34-34, 47-47


20-20: Consistent coupon application steps

Using the same phrasing for coupon application across all scenarios improves consistency and readability of the test suite.

Also applies to: 29-29, 42-42, 56-56

src/Sylius/Behat/Resources/config/suites/ui/inventory/checkout_inventory.yml (1)

21-25: Improved modularity with additional checkout contexts

Adding separate context classes for cart, address, payment, and shipping setup enhances the modularity of the test suite. This separation of concerns allows for more focused and maintainable test contexts, making it easier to set up specific checkout scenarios.

features/shop/inventory/cart_inventory/verify_inventory_quantity_when_updating_cart_summary.feature (1)

16-21: Test scenario structure improved for clarity and consistency

The scenario structure has been improved by:

  1. Simplifying tags to only use @api @ui instead of including browser-specific tags
  2. Using past tense in step definitions ("I changed" instead of "I change")
  3. Adding explicit verification steps to check cart details and product quantity

This change follows modern Behat best practices by clearly separating actions from assertions.

src/Sylius/Behat/Resources/config/suites/api/inventory/checkout_inventory.yaml (1)

21-25: Enhanced test context configuration for comprehensive checkout testing

The addition of these setup contexts (cart, checkout.address, checkout.payment, checkout.shipping) provides more comprehensive test coverage for the checkout inventory API suite by ensuring all necessary checkout components are properly configured before test execution.

These additions align with the modular approach to checkout testing that's being implemented across the Sylius test infrastructure.

src/Sylius/Behat/Page/Shop/Checkout/AddressPage.php (4)

20-24: Added secure password handling infrastructure

Added imports for the SecurePasswordTrait and SharedStorageInterface to implement more secure password handling in tests.


32-33: Implemented SecurePasswordTrait for enhanced security

The SecurePasswordTrait implementation helps centralize password handling logic and provides more secure password management during tests.


43-44: Added SharedStorageInterface dependency for secure password handling

The constructor now includes SharedStorageInterface as a protected property, which is required by the SecurePasswordTrait to store and retrieve secure passwords between test steps.


181-181: Enhanced password security in specifyPassword method

Modified the specifyPassword method to use the retrieveSecurePassword method from the trait instead of directly setting the raw password value. This improves security by using the trait's mechanism to substitute and retrieve secure passwords from shared storage.

features/shop/promotion/applying_promotion_coupon/receiving_no_discount_if_coupon_promotion_is_not_eligible.feature (2)

16-16: Simplified scenario tags for better maintainability

Removed browser-specific tags (likely @mink:chromedriver) in favor of the more generic @api @ui tags. This simplifies the test configuration and makes it easier to run these tests across different environments without being tied to a specific browser implementation.

Also applies to: 25-25, 34-34, 43-43, 53-53


20-20: Standardized step definitions and improved verification clarity

The test steps have been updated to use a consistent format:

  1. "I applied the coupon with code" instead of different variations
  2. Added explicit "When I check the details of my cart" steps to separate actions from verifications
  3. Made verification steps clearer with explicit "Then" statements

These changes follow Behat best practices by clearly distinguishing between actions, events, and assertions while maintaining a consistent vocabulary across scenarios.

Also applies to: 29-30, 38-40, 48-50, 56-57

src/Sylius/Behat/Context/Setup/AdminUserContext.php (3)

18-18: New dependency added for SecurePasswordTrait

Adding the SecurePasswordTrait import is consistent with the broader refactoring to improve secure password handling across Behat contexts.


30-31: Implementing SecurePasswordTrait

The trait addition enables secure password management within this context class, aligning with the standardized approach for user-related contexts.


53-54: Enhancing password security in admin user creation

The implementation now properly processes the password through the replaceWithSecurePassword method, ensuring consistent secure password handling when creating administrator users.

src/Sylius/Behat/Page/Shop/Account/LoginPage.php (4)

16-22: Added required imports for secure password handling

The added imports support the new secure password functionality and constructor dependency injection.


26-27: Implementing SecurePasswordTrait

Adding this trait provides access to secure password handling methods, consistent with the pattern applied across the codebase.


28-37: Added constructor with proper dependency injection

The constructor properly injects all required dependencies including SharedStorageInterface, which is needed for the SecurePasswordTrait functionality.


57-57: Enhanced password handling security

Modified to use the retrieveSecurePassword method from the trait instead of directly using the raw password, improving security in test scenarios.

src/Sylius/Behat/Context/Setup/PromotionContext.php (4)

20-20: Added UpdateCart command import

This import supports the new functionality for applying coupon codes via command bus.


41-41: Added MessageBusInterface import

Required for dispatching commands through the message bus system.


60-61: Injected MessageBusInterface dependency

Proper dependency injection of the command bus enables dispatching commands from this context.


77-84: Added method to apply coupon codes via command bus

This new method properly implements the "I applied the coupon with code" step definition using the command bus architecture, which aligns with the application's messaging approach for cart operations.

src/Sylius/Behat/Page/Admin/Administrator/CreatePage.php (2)

16-19: Added required imports for dependency injection

These imports support the new constructor and dependency injection pattern.


25-34: Added constructor with SharedStorageInterface dependency

The constructor properly injects the SharedStorageInterface and other dependencies required for the page functionality. This supports the secure password handling pattern implemented across the codebase.

src/Sylius/Behat/Context/Api/Admin/ManagingCustomersContext.php (1)

21-21: Good security enhancement for password handling in tests.

The integration of the SecurePasswordTrait and its usage in the iSpecifyItsPasswordAs method improves security by replacing actual passwords with randomly generated ones during tests. This prevents hardcoded passwords from being exposed in test code while maintaining test functionality.

Also applies to: 31-31, 148-148

src/Sylius/Behat/Element/Shop/Account/RegisterElementInterface.php (1)

28-28: Improved type safety for password methods.

The parameter types for specifyPassword and verifyPassword have been updated from nullable strings (?string) to non-nullable strings (string). This change aligns with secure password handling requirements and makes the interface contract more explicit about requiring non-null password values.

Also applies to: 32-32

src/Sylius/Behat/Resources/config/services/pages/admin/account.xml (1)

22-24: Properly injected shared storage for secure password handling.

The sylius.behat.shared_storage service has been injected into both login and reset password page services, enabling them to utilize the secure password handling functionality. This is a necessary change to support the new SecurePasswordTrait implementation across the Behat testing framework.

Also applies to: 28-30

src/Sylius/Behat/Service/Factory/AddressFactory.php (3)

34-34: Default province added to address creation.

Setting "Arkansas" as the default province name ensures consistent address creation in tests where province information is required.


55-61: Helpful new method for province customization.

The createDefaultWithProvinceName method provides a convenient way to create addresses with specific province names while maintaining all other default values, improving test flexibility.


63-70: Useful addition for name customization in test addresses.

The createDefaultWithFirstAndLastName method enables easy customization of customer names in test addresses without having to modify other address properties, enhancing test readability and maintainability.

features/shop/taxation/applying_taxes/applying_correct_taxes_for_items_with_the_same_tax_rate.feature (2)

39-46: Improved scenario flow with better sequencing

The reworked scenario now correctly places the step for removing the product before checking the cart details. This logical flow ensures that the cart state is properly updated before assertions are made, improving test reliability.


48-55: Logical step reordering improves test flow

The scenario now follows a clear pattern: first modify the cart (changing quantity), then explicitly check cart details, and finally assert the expected totals. This structure is more maintainable and consistent with other scenarios in the file.

src/Sylius/Behat/Context/Api/Shop/LoginContext.php (4)

24-24: Enhanced security with SecurePasswordTrait integration

Adding the SecurePasswordTrait implements a more secure approach to password handling in tests, avoiding hardcoded credentials and potential security issues.

Also applies to: 37-37


71-71: Secure password retrieval implementation

Changed the hard-coded password to use the secure password retrieval mechanism, which properly handles password storage and access during test execution.


150-150: Enhanced password security for password reset

Updated password handling in the password reset flow to use secure password replacement, improving test security and consistency with other contexts.


159-159: Consistent password confirmation handling

Password confirmation now consistently uses the secure password confirmation method, ensuring that confirmation logic matches the password replacement used earlier in the flow.

features/shop/cart/shopping_cart/adding_product_to_cart_with_prices_dependent_on_channel.feature (2)

18-23: Improved scenario structure with explicit cart check

The scenario now follows a clearer test pattern by:

  1. Using past tense for actions (changed channel, added product)
  2. Adding an explicit step to check cart details before assertions
  3. Simplifying tags to focus on testing contexts rather than browser implementations

This makes the test more readable and maintainable.


25-30: Consistent scenario format with explicit verification step

The scenario has been updated to match the same pattern as the previous one, maintaining consistency throughout the feature file and improving test clarity by explicitly checking cart details before making assertions.

features/shop/promotion/applying_promotion_coupon/applying_promotion_coupon_with_per_customer_usage_limit.feature (5)

18-24: Standardized coupon application wording

Updated step wording from "I use coupon" to "I applied the coupon" for consistency with other coupon-related steps throughout the codebase. This standardization improves readability and maintainability.


26-36: Consistent coupon application terminology

Standardized to "I applied the coupon" phrasing, which aligns with the past tense convention used throughout the test suite and improves consistency in the coupon application flow.


38-48: Standardized scenario structure for failed coupon application

The scenario has been updated to use consistent terminology and a clear flow: applying the coupon, checking the cart, and then verifying that no discount was applied. This makes the test easier to understand and maintain.


50-61: Improved readability with standardized step phrasing

The scenario follows the consistent pattern established throughout the feature file with standardized coupon application wording and proper flow of actions before assertions.


63-75: Consistent approach to cancelled orders affecting coupon usage

The scenario maintains the same improved structure as other scenarios in this feature, with standardized step phrasing for coupon application and consistent assertion flow for verifying that no discount is applied.

src/Sylius/Behat/Page/Shop/Product/ShowPage.php (1)

264-271: Improved error handling for missing images.

The change enhances image verification by throwing an exception when a 404 is encountered rather than silently returning false. This makes debugging easier as it provides clear error information with the specific image URL in the exception message.

This aligns well with the ignore_not_found: true configuration added in the UX icons bundle, showing a consistent approach to error handling across the codebase.

features/shop/checkout/seeing_order_summary/seeing_addresses_on_order_summary_page_when_shipping_is_required_one_in_checkout.feature (2)

17-21: LGTM! Improved scenario readability with higher-level steps.

The consolidated steps make the scenario more concise and focused on business logic rather than implementation details.


23-30: Improved consistency by removing @mink:chromedriver tag and using higher-level steps.

The refactored steps align with the first scenario and improve maintainability by using the same higher-level step definitions. Removing the @mink:chromedriver tag also helps with test consistency.

src/Sylius/Behat/Context/Setup/UserContext.php (4)

18-30: LGTM! Added SecurePasswordTrait for enhanced password handling.

The SecurePasswordTrait integration implements a more secure approach to handling passwords in test contexts.


49-49: Enhanced password security in user creation.

Using replaceWithSecurePassword prevents hardcoded passwords from being exposed in test scenarios.


63-63: Enhanced password security in customer account creation.

Using replaceWithSecurePassword ensures consistent secure password handling across the test suite.


188-195: Comprehensive password security in change password flow.

The implementation properly handles all aspects of the password change flow:

  1. Retrieves the current password securely
  2. Replaces the new password with a secure version
  3. Confirms the new password to ensure consistency

This approach maintains test integrity while enhancing security.

src/Sylius/Behat/Context/Api/Admin/ManagingAdministratorsContext.php (2)

21-34: LGTM! Added SecurePasswordTrait for enhanced password handling.

Consistent with other contexts, the SecurePasswordTrait integration implements a more secure approach to handling passwords in admin test contexts.


112-112: Enhanced password security in API requests.

Using replaceWithSecurePassword ensures that actual passwords aren't exposed in API request data during tests.

src/Sylius/Behat/Page/Admin/Account/LoginPage.php (4)

16-20: Appropriate imports for new dependencies.

The new imports match the requirements for the class changes, including the SecurePasswordTrait and dependencies for the constructor.


24-24: Good implementation of secure password handling.

Adding the SecurePasswordTrait centralizes password handling logic, ensuring consistent secure behavior across tests.


26-33: Constructor properly initializes dependencies.

The constructor correctly injects and initializes all required dependencies, including the new SharedStorageInterface parameter needed for the SecurePasswordTrait.


47-47: Enhanced security for password handling.

Replacing direct password usage with retrieveSecurePassword ensures passwords are handled securely during testing.

features/shop/cart/shopping_cart/e2e/ui/adding_product_to_cart_with_prices_dependent_on_channel.feature (1)

1-25: Well-designed test for multi-channel pricing functionality.

This feature file effectively tests important aspects of multi-channel and multi-currency support:

  • Channel-specific product pricing
  • Currency conversion using exchange rates
  • Correct price display in cart after currency changes

The scenario provides good coverage for verifying that prices are correctly handled when customers switch between currencies, which is essential for international stores.

features/shop/inventory/cart_inventory/e2e/verify_inventory_quantity_when_updating_cart_summary.feature (1)

1-22: Good test for inventory constraints during cart updates.

This feature file correctly tests that users cannot add more products to their cart than are available in inventory, which is an essential e-commerce constraint.

Note that this feature has both @api and @ui tags. While this allows testing both interfaces, consider whether separate API and UI feature files would be more appropriate for maintainability, especially since there's a UI-specific version of this test in another file.

features/shop/inventory/cart_inventory/e2e/ui/verify_inventory_quantity_when_updating_cart_summary.feature (1)

1-27: Excellent comprehensive test for cart inventory constraints.

This feature file provides thorough testing of cart behavior when updating quantities beyond inventory limits:

  • Tests updating multiple products simultaneously
  • Verifies error notifications for insufficient stock
  • Confirms that valid quantity changes are still applied
  • Ensures the cart total is calculated correctly

The scenario effectively tests the complex interaction between inventory constraints and cart functionality, providing valuable regression protection.

src/Sylius/Bundle/ApiBundle/Assigner/OrderPromotionCodeAssigner.php (3)

23-23: Improved type clarity with PHPDoc annotation

The addition of the PHPDoc annotation for the repository property with a generic type improves code readability and IDE type inference.


32-38: Good refactoring of coupon retrieval logic

This refactoring improves the code by:

  1. Simplifying the logic with inline coupon retrieval
  2. Explicitly handling the case when a coupon code is provided but not found
  3. Returning the cart unchanged when an invalid coupon is provided (instead of potentially throwing an exception)

This approach is more maintainable and handles edge cases more gracefully.


40-40: Simplified coupon assignment

Consolidating the coupon assignment into a single line makes the code more concise and easier to understand.

src/Sylius/Behat/Context/Api/Admin/ResettingPasswordContext.php (5)

17-23: Added required imports for secure password handling

The new imports support the integration of the SecurePasswordTrait and shared storage functionality.


31-31: Integration of SecurePasswordTrait

Using the SecurePasswordTrait centralizes secure password handling logic and improves test security.


39-39: Added SharedStorageInterface dependency

The addition of SharedStorageInterface as a constructor dependency is required for the SecurePasswordTrait functionality.


87-87: Updated password specification to use secure handling

The method now uses the trait's replaceWithSecurePassword method, which securely stores and replaces the original password.


96-96: Updated password confirmation to use secure handling

The method now uses the trait's confirmSecurePassword method, ensuring consistent password management throughout tests.

src/Sylius/Behat/Element/Admin/Customer/FormElement.php (4)

17-24: Added required imports for secure password handling

The new imports support the integration of the SecurePasswordTrait, Session, and shared storage functionality.


28-28: Integration of SecurePasswordTrait

Using the SecurePasswordTrait centralizes secure password handling logic and improves test security.


32-38: Added constructor to support SharedStorageInterface

The new constructor properly injects the SharedStorageInterface dependency needed by the SecurePasswordTrait, while maintaining compatibility with the parent class constructor.


105-105: Updated password specification to use secure handling

The method now uses the trait's replaceWithSecurePassword method, which securely stores and replaces the original password, improving test security.

src/Sylius/Behat/Page/Admin/Account/ResetPasswordPage.php (5)

17-21: Added required imports for secure password handling

The new imports support the integration of the SecurePasswordTrait, Session, RouterInterface and shared storage functionality.


25-25: Integration of SecurePasswordTrait

Using the SecurePasswordTrait centralizes secure password handling logic and improves test security.


27-34: Added constructor to support SharedStorageInterface

The new constructor properly injects the SharedStorageInterface dependency needed by the SecurePasswordTrait, while maintaining compatibility with the parent class constructor by passing all required dependencies.


38-38: Updated new password specification to use secure handling

The method now uses the trait's replaceWithSecurePassword method, which securely stores and replaces the original password.


43-43: Updated password confirmation to use secure handling

The method now uses the trait's confirmSecurePassword method, ensuring consistent password management throughout tests.

src/Sylius/Behat/Context/Ui/Shop/Checkout/CheckoutThankYouContext.php (2)

17-17: Added PHP 8 attribute support.

The import of Behat\Step\Then has been added to enable PHP 8 attribute-based step definitions, which is part of a broader modernization effort across the codebase.


82-83: Step definition updated to use PHP 8 attributes.

The method iShouldNotSeeTheThankYouPage() has been updated to use PHP 8 attribute syntax, which is consistent with the modernization of Behat contexts across the codebase.

features/shop/cart/shopping_cart/adding_product_to_cart.feature (4)

12-12: Tags updated to support API and UI tests.

The @javascript tag has been removed and replaced with @api @ui to enable testing in both API and UI contexts. This is part of a broader effort to standardize test suites.


16-18: Step definitions improved for clarity and consistency.

Steps have been split and reworded to use past tense ("I added" instead of "I add") and to explicitly separate the product addition from checking cart contents. This improves test readability and helps isolate the cause of failures.


31-31: Tags updated to support API and UI tests.

Similar to the previous scenario, the @javascript tag has been removed and replaced with @api @ui to enable testing in both API and UI contexts.


35-37: Steps separated for improved test clarity.

Steps have been reworded to use past tense and split into separate actions: adding the product again and then explicitly checking cart details. This provides better visibility into the test flow and makes failure points clearer.

src/Sylius/Behat/Context/Api/Shop/RegistrationContext.php (3)

21-21: Security enhancement: Added SecurePasswordTrait.

The SecurePasswordTrait has been integrated to improve password security in tests by replacing plain text passwords with secure random values.

Also applies to: 29-30


93-93: Implemented secure password handling.

Original passwords are now replaced with secure random passwords during testing, which is a security best practice. The trait stores both the original and secure passwords in shared storage for validation purposes.


296-296: Consistent secure password implementation.

The fillContent method now also uses the secure password handling mechanism, ensuring consistent password management throughout the registration process.

src/Sylius/Behat/Context/Setup/PaymentContext.php (4)

17-17: Updated imports for PHP 8 attribute support.

Added the Behat\Step\Given import to support PHP 8 attribute-based step definitions, consistent with the codebase modernization effort.


47-49: Converted to PHP 8 attributes for step definitions.

Step definitions have been updated from docblock annotations to modern PHP 8 attributes, improving code clarity and maintainability.


51-51: Simplified payment method code generation.

Removed the redundant 'PM_' prefix from payment method code generation, now using only the inflected name code. This simplifies the code and makes the generated codes more consistent with other naming patterns in the system.


104-104: Converted to PHP 8 attributes for step definition.

Updated the thisPaymentMethodIsNotUsingPayum method to use PHP 8 attributes instead of docblock annotations, consistent with other modernization changes.

src/Sylius/Behat/Page/Shop/Account/ResetPasswordPage.php (5)

17-21: Good addition of necessary imports for secure password handling.

The imports add support for the SecurePasswordTrait and SharedStorageInterface which are required for the secure password implementation.


25-25: Appropriate use of SecurePasswordTrait for secure password handling.

The trait provides methods for securely handling passwords during testing, which is a good security practice.


27-35: Well-structured constructor for dependency injection.

The constructor properly injects the required dependencies including the Session, minkParameters, router, and SharedStorageInterface which is needed by the SecurePasswordTrait.


49-49: Enhanced password security using trait method.

The implementation now uses replaceWithSecurePassword to handle passwords more securely during tests rather than setting raw values directly.


54-54: Improved password confirmation security.

Using confirmSecurePassword ensures that the confirmation password is handled consistently with the original password while maintaining security during tests.

src/Sylius/Behat/Context/Api/Shop/CustomerContext.php (3)

22-22: Good addition of SecurePasswordTrait for consistent password handling.

Adding the SecurePasswordTrait allows for consistent and secure password handling across the testing framework.

Also applies to: 32-32


154-157: Enhanced security in password change implementation.

The implementation now securely handles passwords:

  • Uses retrieveSecurePassword for the current password
  • Uses replaceWithSecurePassword for the new password
  • Uses confirmSecurePassword for confirming the new password

This ensures consistent and secure password handling during API tests.


561-561: Improved security for account registration password.

Now using replaceWithSecurePassword to handle the password securely during account registration tests.

src/Sylius/Behat/Resources/config/services/pages/shop/account.xml (3)

39-41: Proper dependency injection for change_password page.

The service now correctly receives the shared storage service needed by the SecurePasswordTrait.


43-46: Proper dependency injection for login page.

The service definition now includes both the table accessor and shared storage services, supporting both table operations and secure password handling.


57-59: Proper dependency injection for reset_password page.

The service now correctly receives the shared storage service needed by the SecurePasswordTrait implementation.

src/Sylius/Behat/Element/Shop/Account/RegisterElement.php (5)

18-22: Good addition of necessary imports for secure password handling.

The imports add support for the SecurePasswordTrait and other required dependencies.


26-26: Appropriate use of SecurePasswordTrait for secure password handling.

The trait provides methods for securely handling passwords during testing, which is a good security practice.


28-35: Well-structured constructor for dependency injection.

The constructor properly injects the required dependencies including the Session, minkParameters, and SharedStorageInterface which is needed by the SecurePasswordTrait.


67-71: Enhanced security and improved method signature for password handling.

The method now:

  1. Uses a non-nullable string parameter, improving type safety
  2. Implements replaceWithSecurePassword for secure password handling during tests

This change improves both security and code reliability.


79-83: Enhanced security and improved method signature for password verification.

The method now:

  1. Uses a non-nullable string parameter, improving type safety
  2. Implements confirmSecurePassword for secure password confirmation during tests

This change ensures password verification is handled consistently with the initial password setting.

src/Sylius/Behat/Context/Cli/ChangeAdminPasswordContext.php (5)

17-18: Good addition of required dependencies.

The import statements for SecurePasswordTrait and SharedStorageInterface are necessary to support the secure password handling functionality being integrated.


29-29: Appropriate use of the SecurePasswordTrait.

Adding the trait properly integrates the secure password handling functionality into this context.


45-45: Necessary dependency injection.

Adding the SharedStorageInterface as a readonly dependency is required for the SecurePasswordTrait to function properly, as it relies on shared storage to manage secure passwords.


73-73: Good implementation of secure password handling.

Replacing direct password assignment with replaceWithSecurePassword() enhances security by generating and storing a random password instead of using the literal test password value.


100-100: Correctly retrieves the secure password.

The retrieveSecurePassword() method properly retrieves the secure password that was stored earlier, maintaining the expected test behavior while using more secure values.

src/Sylius/Behat/Context/Ui/Shop/RegistrationContext.php (5)

17-17: Added required import for PHP 8 attributes.

The import of Behat\Step\When is necessary for supporting the new PHP 8 attribute-based step definitions.


97-101: Updated to PHP 8 attribute syntax.

Good modernization by replacing DocBlock annotations with PHP 8 attributes for step definitions. The method now uses a dedicated signature with a non-nullable string parameter for better type safety.


103-107: Split functionality into a dedicated method.

Excellent refactoring to create a separate method for the case when no password is specified. This improves code clarity and provides explicit handling for this scenario.


117-117: Updated to PHP 8 attribute syntax.

Properly modernized the step definition using PHP 8 attributes instead of DocBlock annotations.


120-120: Improved empty password handling.

Changed to use an empty string instead of null, which is more consistent with the split method approach used earlier and ensures predictable behavior.

src/Sylius/Behat/Page/Shop/Account/ChangePasswordPage.php (6)

17-21: Added necessary imports for secure password handling.

The addition of Session, SecurePasswordTrait, and SharedStorageInterface imports properly supports the integration of secure password handling in this page object.


25-25: Appropriate use of SecurePasswordTrait.

Including the trait enables the page to use secure password handling methods consistently with other classes in the system.


27-34: Well-structured constructor for dependency injection.

The constructor properly injects the required dependencies, including SharedStorageInterface which is needed by the SecurePasswordTrait. Using the protected access modifier for the shared storage property allows potential subclasses to access it.


54-54: Proper use of retrieveSecurePassword for current password.

The method now uses retrieveSecurePassword() to retrieve the securely stored password, which is appropriate for input fields that expect an existing password.


59-59: Good implementation of replaceWithSecurePassword for new password.

Using replaceWithSecurePassword() for the new password field properly secures this sensitive value during testing.


64-64: Appropriately using confirmSecurePassword for confirmation field.

The use of confirmSecurePassword() ensures that the confirmation field receives the same secure password that was generated for the new password field, maintaining the expected behavior.

src/Sylius/Behat/Context/Setup/Checkout/ShippingContext.php (3)

25-32: Well-designed class with appropriate modifiers.

The class is correctly marked as final readonly and implements the Behat Context interface. The constructor properly injects the required dependencies (SharedStorageInterface and MessageBusInterface) using constructor property promotion for cleaner code.


33-39: Clear and concise step definitions using PHP 8 attributes.

The step definitions use modern PHP 8 attributes and provide multiple variations for different actors (user, customer, visitor), which improves test readability and flexibility.


41-54: Well-implemented method for choosing shipping methods.

The chooseShippingMethod method:

  1. Retrieves the order from shared storage
  2. Gets the shipping method code (either from the provided method or from shared storage)
  3. Dispatches a ChooseShippingMethod command with the necessary information

This implementation adheres to the command pattern and properly handles the case where a shipping method is not explicitly provided.

src/Sylius/Behat/Context/Api/Shop/CheckoutContext.php (9)

17-17: Well-organized imports for the new functionality.

The new imports have been added for the refactored functionality, following the proper namespace organization. The addition of CheckoutShippingContext and AddressFactoryInterface aligns with the service-oriented approach.

Also applies to: 24-26


66-67: Good dependency injection pattern.

The constructor has been properly updated to inject the new CheckoutShippingContext service and AddressFactoryInterface, which improves separation of concerns by delegating shipping method selection to a dedicated service.

Also applies to: 73-73


112-116: Clear documentation of UI-specific placeholder.

This new method provides a clean way to handle UI-specific steps in the API context by explicitly marking the implementation as intentionally empty with a clear comment.


118-118: Modernized step definitions with PHP 8 attributes.

The conversion from PHPDoc annotations to PHP 8 attributes improves code readability and leverages the native language features for Behat step definitions.

Also applies to: 236-238, 455-456, 507-508, 652-652, 911-911, 1128-1128, 1254-1254


151-151: Properly delegated shipping method selection.

The implementation now correctly delegates shipping method selection to the specialized CheckoutShippingContext service, which aligns with the single responsibility principle.

Also applies to: 572-573, 586-586


238-240: Improved method flexibility with optional parameter.

The iSpecifyTheBillingAddressAs method now accepts an optional AddressInterface parameter and uses the address factory as a fallback, making the method more flexible while maintaining backward compatibility.


519-522: Standardized response checker usage.

The code now consistently uses isViolationWithMessageInResponse for checking API response violations, which improves code consistency and readability.

Also applies to: 659-665, 1090-1092, 1111-1114, 1122-1125, 1162-1168


533-536: Improved error handling logic.

The error handling code has been simplified to directly check the response status code and content, making it more straightforward to understand the expected error response.


836-841: Clear assertion for shipping step failure.

The method iShouldNotBeAbleToProceedCheckoutShippingStep now checks both the checkout state and empty shipments, providing a comprehensive verification of the failure condition.

Comment on lines +68 to +69
#[Then('my order should be completed successfully')]
public function iShouldSeeTheThankYouPage(): void
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Step definition updated to use PHP 8 attributes with changed wording.

The method iShouldSeeTheThankYouPage() has been updated to use PHP 8 attribute syntax with a single pattern my order should be completed successfully instead of the previous multiple docblock annotations. The wording change aligns with similar changes in the API shop context.

Please verify that all feature files using the previous patterns (I should see the thank you page, the visitor should see the thank you page, the customer should see the thank you page) have been updated to use the new pattern:


🏁 Script executed:

#!/bin/bash
# Search for any feature files still using the old thank you page patterns
rg -t feature "I should see the thank you page" --iglob "features/**"
rg -t feature "the visitor should see the thank you page" --iglob "features/**"
rg -t feature "the customer should see the thank you page" --iglob "features/**"

Length of output: 332


To correctly search all .feature files for the old thank-you step patterns, let’s re-run using file globbing instead of -t feature:


🏁 Script executed:

#!/bin/bash
# Search for old thank-you step patterns in .feature files
rg -n "I should see the thank you page" --glob "features/**/*.feature"
rg -n "the visitor should see the thank you page" --glob "features/**/*.feature"
rg -n "the customer should see the thank you page" --glob "features/**/*.feature"

Length of output: 3120


Feature files still use old thank‑you step wording – please update them
The new PHP‑8 attribute in CheckoutThankYouContext::iShouldSeeTheThankYouPage() expects the step
    Then my order should be completed successfully
but these feature files still use one of the old patterns. Please replace every occurrence of:
    • Then I should see the thank you page
    • Then the visitor should see the thank you page
    • Then the customer should see the thank you page
with the new step.

Affected files and lines:

  • features/shop/checkout/ability_to_confirm_an_order_with_a_promotion_on_shipping.feature:24
  • features/shop/checkout/placing_an_order_after_moving_back_in_checkout.feature:21, 30, 39
  • features/shop/checkout/not_seeing_payment_method_instructions_on_thank_you_page_if_order_total_is_zero.feature:21
  • features/shop/checkout/having_registration_account_form_prefilled_after_checkout.feature:19, 30
  • features/shop/checkout/paying_for_order/paying_offline_during_checkout.feature:22, 31
  • features/shop/checkout/order_promotion/order_promotion_integrity_validation.feature:37, 48, 66, 77
  • features/shop/checkout/paying_for_order/paying_offline_during_checkout_as_guest.feature:22, 31, 39, 46
  • features/shop/checkout/ability_to_checkout_as_guest_with_a_registered_email.feature:22, 32
  • features/shop/cart/shopping_cart/allowing_access_only_for_correctly_logged_in_users.feature:53 (“visitor”), 104 (“customer”)

Comment on lines +47 to +52
$scenario_setup_password = $this->sharedStorage->get('scenario_setup_password');

// If the provided password matches the scenario setup password,
// use the secure password generated earlier; otherwise, return the scenario setup password to cause the test to fail
return $scenario_setup_password === $password ? $this->sharedStorage->get('password') : $scenario_setup_password;
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue

Undefined key risk in retrieveSecurePassword().

If the feature never called replaceWithSecurePassword() the lookup will
return null and === comparison will succeed, returning null
instead of a string – later strlen()/form fills will explode.

Add a guard:

Assert::notNull($scenario_setup_password, 'No secure password stored, did you forget replaceWithSecurePassword()?');

Comment on lines +28 to +31
$newPassword = (empty($password) || strlen($password) < 4)
? $password
: bin2hex(random_bytes(16));

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Random password may violate field‑length limits & could throw.

bin2hex(random_bytes(16)) returns a 32‑char string.
Many Sylius form fields (e.g. admin/customer password) are limited to 20 – 30 chars.
A truncated value will fail validation and break the scenario silently.
random_bytes() can also throw an \Exception (PHP <8.4) and is not caught.

-            : bin2hex(random_bytes(16));
+            : bin2hex(random_bytes(12)); // 24 chars fits Sylius constraints
+
+        // @todo consider wrapping in try/catch to surface RNG failures
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
$newPassword = (empty($password) || strlen($password) < 4)
? $password
: bin2hex(random_bytes(16));
$newPassword = (empty($password) || strlen($password) < 4)
? $password
: bin2hex(random_bytes(12)); // 24 chars fits Sylius constraints
// @todo consider wrapping in try/catch to surface RNG failures

Comment on lines +853 to +859
// Hotfix for a bug that allowed a guest to add a product to the cart belonging to a logged-in user
$hasToken = $this->sharedStorage->has('token');
$createdAsGuest = $this->sharedStorage->has('created_as_guest') ? $this->sharedStorage->get('created_as_guest') : null;
if (!$hasToken && $createdAsGuest === false) {
$tokenValue = null;
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Race‑condition hot‑fix may still leak another customer’s cart.

The condition only resets $tokenValue when no token is present in
shared storage.
If a guest steals a valid but stale token cookie the branch is
skipped and they can still add items.

A safer guard:

-        if (!$hasToken && $createdAsGuest === false) {
+        if ($createdAsGuest === false && (
+            !$hasToken ||
+            $this->sharedStorage->get('token') !== $tokenValue     // mismatched token
+        )) {
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// Hotfix for a bug that allowed a guest to add a product to the cart belonging to a logged-in user
$hasToken = $this->sharedStorage->has('token');
$createdAsGuest = $this->sharedStorage->has('created_as_guest') ? $this->sharedStorage->get('created_as_guest') : null;
if (!$hasToken && $createdAsGuest === false) {
$tokenValue = null;
}
// Hotfix for a bug that allowed a guest to add a product to the cart belonging to a logged-in user
$hasToken = $this->sharedStorage->has('token');
$createdAsGuest = $this->sharedStorage->has('created_as_guest') ? $this->sharedStorage->get('created_as_guest') : null;
if ($createdAsGuest === false && (
!$hasToken ||
$this->sharedStorage->get('token') !== $tokenValue // mismatched token
)) {
$tokenValue = null;
}

Comment on lines +118 to +130
{
/** @var OrderInterface $cart */
$cart = $this->sharedStorage->get('order');
$orderItemId = $cart->getItems()->filter(
static fn (OrderItemInterface $orderItem): bool => $orderItem->getVariant()->getProduct() === $product,
)->first()->getId();

$this->commandBus->dispatch(new ChangeItemQuantityInCart(
orderTokenValue: $tokenValue,
orderItemId: $orderItemId,
quantity: $quantity,
));
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Possible NPE when product not found in cart.

first()->getId() returns null if the product is not present, leading
to an invalid UUID in ChangeItemQuantityInCart.

Add an upfront assertion:

Assert::notNull($orderItemId, sprintf('Product %s is not in the cart.', $product->getCode()));

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Documentation Documentation related issues and PRs - requests, fixes, proposals. Maintenance CI configurations, READMEs, releases, etc.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants