2015-08-17 17:00:26 -07:00
< ? php
namespace Behat\Mink\Tests\Driver\Js ;
use Behat\Mink\Tests\Driver\TestCase ;
class JavascriptEvaluationTest extends TestCase
{
/**
* Tests , that `wait` method returns check result after exit .
*/
public function testWaitReturnValue ()
{
$this -> getSession () -> visit ( $this -> pathTo ( '/js_test.html' ));
$found = $this -> getSession () -> wait ( 5000 , '$("#draggable").length == 1' );
$this -> assertTrue ( $found );
}
public function testWait ()
{
$this -> getSession () -> visit ( $this -> pathTo ( '/js_test.html' ));
$waitable = $this -> findById ( 'waitable' );
$waitable -> click ();
$this -> getSession () -> wait ( 3000 , '$("#waitable").has("div").length > 0' );
2015-10-08 11:40:12 -07:00
$this -> assertEquals ( 'arrived' , $this -> getAssertSession () -> elementExists ( 'css' , '#waitable > div' ) -> getText ());
2015-08-17 17:00:26 -07:00
$waitable -> click ();
$this -> getSession () -> wait ( 3000 , 'false' );
2015-10-08 11:40:12 -07:00
$this -> assertEquals ( 'timeout' , $this -> getAssertSession () -> elementExists ( 'css' , '#waitable > div' ) -> getText ());
2015-08-17 17:00:26 -07:00
}
/**
* @ dataProvider provideExecutedScript
*/
public function testExecuteScript ( $script )
{
$this -> getSession () -> visit ( $this -> pathTo ( '/index.html' ));
$this -> getSession () -> executeScript ( $script );
sleep ( 1 );
$heading = $this -> getAssertSession () -> elementExists ( 'css' , 'h1' );
$this -> assertEquals ( 'Hello world' , $heading -> getText ());
}
public function provideExecutedScript ()
{
return array (
array ( 'document.querySelector("h1").textContent = "Hello world"' ),
array ( 'document.querySelector("h1").textContent = "Hello world";' ),
array ( 'function () {document.querySelector("h1").textContent = "Hello world";}()' ),
array ( 'function () {document.querySelector("h1").textContent = "Hello world";}();' ),
array ( '(function () {document.querySelector("h1").textContent = "Hello world";})()' ),
array ( '(function () {document.querySelector("h1").textContent = "Hello world";})();' ),
);
}
/**
* @ dataProvider provideEvaluatedScript
*/
public function testEvaluateJavascript ( $script )
{
$this -> getSession () -> visit ( $this -> pathTo ( '/index.html' ));
$this -> assertSame ( 2 , $this -> getSession () -> evaluateScript ( $script ));
}
public function provideEvaluatedScript ()
{
return array (
array ( '1 + 1' ),
array ( '1 + 1;' ),
array ( 'return 1 + 1' ),
array ( 'return 1 + 1;' ),
array ( 'function () {return 1+1;}()' ),
array ( '(function () {return 1+1;})()' ),
array ( 'return function () { return 1+1;}()' ),
array ( 'return (function () {return 1+1;})()' ),
);
}
}