zenstruck / browser

A fluent interface for your Symfony functional tests.
MIT License
185 stars 17 forks source link

Crawler is detached from the form fill helpers #138

Open norkunas opened 8 months ago

norkunas commented 8 months ago

I'm having problems with selectFieldOption when it is dynamic. It's impossible to select a value that is added via JS.

So I'm trying to add it dynamically and then select it, but the thing is that in ->use(function (Crawler $crawler) callback what I modify via crawler is not trully sent as form data.

In https://github.com/symfony/ux/issues/1334 it was suggested to use ChoiceFormField::addChoice($node) but that doesn't work with non-multiple select element. So I though I will do this:

            ->use(static function (Crawler $crawler) {
                $form = $crawler->selectButton('Submit')->form();
                $stage = $form->get('create[items][0][stage]');
                self::assertInstanceOf(ChoiceFormField::class, $stage);
                $stage->disableValidation();
                $stage->select('cf97d7fe-3222-472a-a1c3-ed9cdd058080');
            })

But probably the crawler does not modify Mink's document? Could we have a helper method to add dynamic values for this case?

kbond commented 8 months ago

It's impossible to select a value that is added via JS.

Are you using the PantherBrowser then? Panther's crawler should allow this 🤔

norkunas commented 8 months ago

In this case not and would like not to

kbond commented 8 months ago

Ok, yeah, this is currently a problem with KernelBrowser. The mink browser kit driver keeps track of the form fields in memory.

I'm fairly certain ~#77~ #125 will allow this (or could be added easily). I'm hesitant to pull the trigger on that PR, while it should be BC, I'm worried about edge cases I haven't yet discovered. I'm thinking I might include this PR in a new major version of this package.