-
-
Notifications
You must be signed in to change notification settings - Fork 22
Description
Hello,
In my tests, I like to do stuff like this:
$this->browser()
->useTurbo()
->actAsUserWithRoles('ROLE_1', 'ROLE_2')
// ->maybeOtherStuff()those methods exists because I'm using a custom browser:
use Zenstruck\Browser\KernelBrowser;
final class MyCustom extends KernelBrowser
{
public function actAsUserWithRoles('(string $role, string ...$roles): self
public function useTurbo(): self
}all along those methods, I modify the protected property KernelBrowser::$defaultHttpOptions.
So far, so good, I can make any requests with ->get(), ->post(), etc... which will use my prerequisites for the client
Until I want I'm using ->click() or stuff that use Mink under the hood.
The problem is because mink does not access to $defaultHttpOptions, and it directly call the (Symfony) client created in ->browser() method.
I think we can mitigate the problem by deferring the creation of the Symfony client (by using a closure) until the first moment we actually need the mink session.
Another solution may be that somehow, \Zenstruck\Browser\Session\Driver\BrowserKitDriver could access the default http options (not sure how to do that)
EDIT: even in 2.x without Mink, I think the problem still exist