Search code examples
phplaraveltestingjquery-select2laravel-dusk

Laravel Dusk - Call to a member function click() on array


I have a problem. When I try to run my dusk test it outputs this error:

1) Tests\Browser\NewPostTest::test_new_post
Error: Call to a member function click() on array

D:\xampp\htdocs\laravel_blog\tests\Browser\NewPostTest.php:32
D:\xampp\htdocs\laravel_blog\vendor\laravel\dusk\src\Concerns\ProvidesBrowser.php:67
D:\xampp\htdocs\laravel_blog\tests\Browser\NewPostTest.php:34

My testing method looks like this:

public function test_new_post()
    {
        $this->browse(function (Browser $browser) {
          $faker = Faker::create();
          $title = $faker->sentence();
          $slug = str_replace(' ', '-', $title);
          $browser->loginAs(User::find(2))
                  ->visit('/posts/create')
                  ->assertSee('Create New Post')
                  ->type('title', $title)
                  ->type('slug', $slug)
                  ->type('body', $faker->paragraphs(5, true))
                  ->select('category_id')
                  ->script('jQuery(".select2").val(["1","2"]).trigger("change");')
                  ->click('input[type=submit]#submit')
                  ->assertPathIs('/posts');
        });
    }

As you see I'm using select2 for my tags . Can anyone please tell me what I'm doing wrong?


Solution

  • You can't use chaining after script() because it returns an array instead of $this:

    $browser->[...]
        ->script('jQuery(".select2").val(["1","2"]).trigger("change");')
    $browser->click('input[type=submit]#submit')
        ->assertPathIs('/posts');