In laravel 5.4, I can see that there are methods such as:
$browser->pause(1000);
$browser->waitFor('.selector');
$browser->waitForLink('Create');
But I don't see these in Laravel 5.3.
We have two chained select boxes where second select box values are loaded through ajax based on selection from first select box. The problem is that when we run test, laravel doesn't wait for second selectbox/ajax to load which makes the test fail because it could not select any value from second select box.
$this->visit('/department');
$this->select('1', 'country_id');
$this->select('1', 'region_id'); // problem here
// rest of code
I also tried using sleep()
but it didn't work.
Any idea of how to functional test such scenario in 5.3 please ? Thanks
By default, laravel 5.3 doesn't support this function. As they have introduced Ajax Testing in laravel 5.4 using Dusk.
Check this post : https://laravel-news.com/laravel-dusk-is-coming
However, We are in luck.
Looking at the composer.json of dusk. You can use it in laravel 5.3 as its dependency is "illuminate/support" : "~5.3"
which is satisfied by the Laravel 5.3.
All you need to do is : composer require laravel/dusk
Check the composer.json
here : https://github.com/laravel/dusk/blob/master/composer.json
Edit:
There was an issue with the dependency. I created a new package which resolved the dependency issue. I have run all the test cases. It didn't give me any error.
You can use this package using following command : composer require pankitgami/dusk
Check here : https://packagist.org/packages/pankitgami/dusk
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With