Я пытаюсь создать приемочные тесты для работы с ReactionJS. Сначала я получил нормально работающий Codeception, а затем добавил, реагирует. Вот когда я заметил, что в Codeception отсутствует JS. Я попытался добавить PhantomJS: та же проблема. Поскольку я не могу отлаживать phantomJS, я решил попробовать селен, чтобы увидеть, как он работает в Firefox. Я работал над этим в течение нескольких дней и Codeception отказывается открыть Firefox, как обычный тест на селен.
Вещи, которые ты собираешься спросить:
— Да, я бегу codecept build
после каждого изменения.
— Да, у меня есть java -jar selenium-server-standalone-2.48.0.jar
Бег. Хотя это не имеет значения. В тесте нет разницы, запущен он у меня или нет.
— Да, я пытался $I->waitForElement('#whatever')
, Примерно через 20 секунд он умирает.
— нет я иметь использовать Laravel
Вот моя конфигурация:
acceptance.suite.yml
class_name: AcceptanceTester
modules:
enabled:
- WebDriver:
url: 'http://eagle.app/'
browser: firefox #This does nothing. I literally changed it to `fart` and it didn't error. just same failed tests due to no JS
window_size: 1024x768
capabilities:
webStorageEnabled: true
javascriptEnabled: true
firefox_binary: /Applications/Firefox.app
- \Helper\Acceptance
/tests/acceptance/AuthCest.php
<?php
//use \AcceptanceTester;
class AuthCest
{
public function _before(AcceptanceTester $I)
{
}
public function _after(AcceptanceTester $I)
{
}
// tests
public function register(AcceptanceTester $I)
{
// This should open firefox/selenium
$I->executeInSelenium(function (Facebook\WebDriver\Remote\RemoteWebDriver $webdriver) {
$handles=$webdriver->getWindowHandles();
$last_window = end($handles);
$webdriver->switchTo()->window($last_window);
});
// This is my original test. I realize its not in executeInSelenium()
// but I'm just showing you what works in non-SPA laravel apps (which doesn't work for me)
$I->switchToWindow();
$I->am('an anonymous user');
$I->wantTo('Register');
$I->amOnPage('/');
$I->wait(1);
$I->see('Laravel 5'); #this is where it dies with react
$I->click('REGISTER');
$I->fillField(['name' => 'name'], 'testuser');
$I->fillField(['name' => 'email'], '[email protected]');
$I->fillField(['name' => 'password'], 'testuserpass');
$I->fillField(['name' => 'password_confirmation'], 'testuserpass');
$I->click('Register', '#content form');
$I->see('LOG OUT');
$I->click('LOG OUT');
$I->see('REGISTER');
$I->click('LOG IN');
$I->fillField(['name' => 'email'], '[email protected]');
$I->fillField(['name' => 'password'], 'testuserpass');
$I->click('Login', '#content form');
$I->see('LOG OUT');
}
}
codeception.yml
actor: Tester
paths:
tests: tests
log: tests/_output
data: tests/_data
support: tests/_support
envs: tests/_envs
settings:
bootstrap: _bootstrap.php
colors: true
memory_limit: 1024M
extensions:
enabled:
- Codeception\Extension\RunFailed
- Codeception\Extension\Recorder
Вам не нужно открывать Firefox вручную, Codeception + Selenium делает это автоматически при запуске ./codecept run accept
Также убедитесь, что «firefox_binary» указывает на правильный путь.
Других решений пока нет …