Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error when trying to accept a native js popup with Codeception and Yii2

I'm trying to close a confirm js popup generated by Yii2 for confirmation of the deletion of the record, in this case a user, with Codeception and his.

Below is the error:

[WebDriverException] JSON decoding of remote response failed. Error code: 4 The response: 'Invalid Command Method - Request => {"headers":{"Accept":"application/json","Content-Length":"0","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:4444"},"httpVersion":"1.1","method":"GET","url":"/alert_text","urlParsed":{"anchor":"","query":"","file":"alert_text","directory":"/","path":"/alert_text","relative":"/alert_text","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/alert_text","queryKey":{},"chunks":["alert_text"]},"urlOriginal":"/session/cac855f0-e7f8-11e4-ae75-8baa74cf41b1/alert_text"}'

Below is my code:

<?php 
$username = 'foobar';
$email = '[email protected]';

$I = new AcceptanceTester($scenario);
$I->wantTo('Check that users can update their passwords');

$I->haveInDatabase('user', array('username' => $username, 'email' => $email));
$id = $I->grabFromDatabase('user', 'id', array('username' => $username, 'email' => $email));

$I->amOnPage("/backend/web/index.php/user/$id");
$I->see('Borrar');
$I->click('Borrar');

$I->wait(3);
## This line throws the error
$I->seeInPopup('eliminar este usuario');
## Trying to change to the popup. This doesn't throw any error
$I->executeInSelenium(function (Webdriver $webdriver) {
   $handles=$webdriver->getWindowHandles();
   $last_window = end($handles);
   $webdriver->switchTo()->window($last_window);
});
$I->pressKey('body', \WebDriverKeys::ENTER);
## This throwed the error before
$I->acceptPopup();
$I->wait(1);

$I->seeInCurrentUrl('user/list');
$I->dontSeeInDatabase('user', array('username' => $username, 'email' => $email));
like image 991
VictorArcas Avatar asked Apr 21 '15 07:04

VictorArcas


1 Answers

As far as I know the code below is telling Codeception to change the browser window entirely. I've literally just written a test with this exact block of code to change the browser window. Perhaps try removing this or commenting it and try running the test again? The popup parts look ok as far as I can see

$I->executeInSelenium(function (Webdriver $webdriver) {
    $handles=$webdriver->getWindowHandles();
    $last_window = end($handles);
    $webdriver->switchTo()->window($last_window);
});
like image 63
Lynch Avatar answered Oct 22 '22 01:10

Lynch