Search code examples
seleniumtestingyii2codeceptionacceptance-testing

Codeception acceptance tests run before browser starts


When I run Codeception tests, sometimes on acceptance tests a browser starts too late, tests do not wait for it to start, and I get errors for tests that passed before a browser start:

[ConnectionException] Can't connect to Webdriver at http://127.0.0.1:4444/wd/hub. Please make sure that Selenium Server or PhantomJS is running.

#1 Codeception\Subscriber\Module->before

#2 D:\path\Yii\basic\vendor\symfony\event-dispatcher\EventDispatcher.php:212

#3 D:\path\Yii\basic\vendor\symfony\event-dispatcher\EventDispatcher.php:44

One time a browser didn't start at all.

My command:

C:\Windows\System32\cmd.exe /K "cd /D D:\path\Yii\basic && vendor\bin\codecept run"

acceptance.suite.yml:

class_name: AcceptanceTester
extensions:
    enabled:
        - Codeception\Extension\RunProcess:
            - java -jar -Dwebdriver.chrome.driver="D:/Selenium/chromedriver.exe" -Dwebdriver.gecko.driver="D:/Selenium/geckodriver.exe" "D:/Selenium/selenium-server-standalone-3.6.0.jar"
modules:
    enabled:
        - WebDriver:
            url: https://hotel.localhost/
            browser: chrome
        - Yii2:
            part: orm
            entryScript: index-test.php
            cleanup: false

codeception.yml:

actor: Tester
paths:
    tests: tests
    log: tests/_output
    data: tests/_data
    helpers: tests/_support
settings:
    bootstrap: _bootstrap.php
    memory_limit: 1024M
    colors: true
modules:
    config:
        Yii2:
            configFile: 'config/test.php'
            cleanup: false

coverage:
    enabled: true
    whitelist:
        include:
            - models/*
            - controllers/*

Thank you in advance.


Solution

  • Add some sleep to RunProcess configuration as documented here.

    To wait for the process to be launched use sleep option. In this case you need configuration to be specified as object:

    extensions:
        enabled:
            - Codeception\Extension\RunProcess:
                0: java -jar ~/selenium-server.jar
                1: mailcatcher
                sleep: 5 # wait 5 seconds for processes to boot