Skip to content

Instantly share code, notes, and snippets.

@Jibbarth
Created December 9, 2023 11:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Jibbarth/727a6220c00ce807aec8bb4d2749747a to your computer and use it in GitHub Desktop.
Save Jibbarth/727a6220c00ce807aec8bb4d2749747a to your computer and use it in GitHub Desktop.
[Sylius] Get ready to add a behat feature that use javascript

While contributing on Sylius, I had to add a test for a fix.

There was already some behat test regarding the feature, but I had trouble to get ready to launch them in my own environment, and Makefile provided by Sylius didn't help me.

Here is how I proceed.

1. Launching Sylius in test mode

First, you need to be able to launch the sylius, but in Test mode.

In the docker-compose.yml provided, I commented everything except the mysql container. In my case, I have all php tools installed on my host, no need for others containers.

Once started, change the .env to use it (ie adding password 😅)

DATABASE_URL=mysql://root:mysql@127.0.0.1/sylius_%kernel.environment%?charset=utf8mb4

And enable the test mode

APP_ENV=test

Then, initialize correctly the database.

php bin/console doctrine:database:create
php bin/console doctrine:migration:migrate
php bin/console sylius:fixture:load -n

And finally, start the webserver thanks to Symfony binary.

symfony local:server:start -d

You can specify the port to start :

symfony local:server:start -d --port=8080

Important

If the port is not on 8080, you'll have to modify the behat.yml.dist file

2. Running a chrome in headless mode

I found this on the dmore/chrome-mink-driver readme.

Open a new terminal and start a new chrome headless :

google-chrome --disable-gpu --headless --remote-debugging-address=0.0.0.0 --remote-debugging-port=9222

Adjust binary to google-chrome-stable or google-chrome-unstable if needed.

3. Launch behat

Finally, you can launch behat

vendor/bin/behat

You can target directly the feature file you are editing, to avoid launching the huge test suite.

vendor/bin/behat features/checkout/addressing_order/sign_in_during_addressing_step.feature  -n

If a test failed, you can find a screenshot and the html page in etc/build directory.

If you have any Timeout like this,

image

It's probably the port is not the same in the behat.yml.dist and the server you started.

You can change the port in the behat.yml.dist :

default:
    # ...
    extensions:
        #...
        Behat\MinkExtension:
            files_path: "%paths.base%/src/Sylius/Behat/Resources/fixtures/"
            base_url: "https://127.0.0.1:8000/" # <-- HERE
            #...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment