0
votes

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.

1

1 Answers

1
votes

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