Uhm lets my clarify it. I proposed selenium because of what @stof said https://github.com/Sylius/Sylius/pull/762#discussion_r8583123 I also dont see any real advantages of using phantomjs in this case but it is your decision what to choose.

Now about scenario. As @pborreli pointed out, scenario title tells you that vendor zip is going to be downloaded. But there is no step that download anything. 
This is how I think this scenario might look like:

```
  @javascript
  Scenario: Generate vendor .zip download link 
    Given I am on the homepage
     When I fill in "form_body" with:
      """
      {
          "require": {
              "symfony/yaml": "~2.3"
          },
          "require-dev": {
              "symfony/filesystem": "~2.3"
          }
      }
      """
     When I press "Go" after it is ready
     Then I should see "Validating composer.json"
      And I should see "Sending to queue"
      And I should see "Starting async job"
      And I should see "./composer update"
      And I should see "Checking vulnerability"
      And I should see "Serving cached vendor.zip"
      And I should see "Done in X seconds"
      And I should see "Download" link 
``` 
Now "Download" is in last step (just web user see it).
"Done in..." does not have any more regular expression that might be hard to understand for somebody that is not a programmer.