Support the ongoing development of Laravel.io →
Dusk Views Testing
  • Dusk Version: 6.4
  • Laravel Version: 6.2
  • PHP Version: 7.3
  • Database Driver & Version: mysql Ver 8.0.22 for Linux on x86_64 (MySQL Community Server - GPL)

Description:

Tests are now failing when searching for text on a raw column that has <a> tag.

Steps To Reproduce:

https://github.com/yajra/laravel-datatables Setup laravel datatables

  • api/DemoController@index
    public function index(Request $request)
    {
        if (!$request->ajax()) {
            return abort(404);
        }

        return DataTables::of(Demo::query())
            ->addColumn('demo_name', function ($demo) {
                return view(
                    'api/demo.blade',
                    compact('demo')
                )->render();
            })
            ->rawColumns(["demo_name"])
            ->make(true);
  • api/demo.blade
<span class="font-lg font-weight-bold">
        <a href="{{ route('demo.show', $demo) }}">
            {{ $demo->name }}
        </a>
</span>
  • DemoController
    public function index()
    {
        return view('demo.index');
    }


    public function show(Demo $demo)
    {
        return view('demo.show', [
            'demo' => $demo,
        ]);
    }
  • demo.index.blade
<table class="table data-table" id="table">
                    <thead>
                    <tr>
                        <th>{{ __('id') }}</th>
                        <th>{{ __('name') }}</th>
                    </tr>
                    </thead>
                    <tbody>
                    </tbody>
                </table>

    <script>
        $(function () {
            var table = $('.data-table').DataTable({
                responsive: true,
                processing: true,
                serverSide: true,
                ajax: {
                    url: "{{ route('api.demo.index') }}",
                    type: 'GET',
                },
                columns: [
                    { data: 'id', name: 'id'},
                    { data: 'demo_name', name: 'demo_name'},
                ]
            });
        });
    </script>

Dusk Test

    public function test_can_see_demo()
    {


            $this->browse(function (Browser $browser) {
            $demo = factory(Demo::class)->create();

            $browser
                ->maximize()
                ->loginAs($this->user->id) // Login user
                ->visit(route('demo.index'))
                ->waitFor("#table")
                ->assertSee("id")
                ->assertSee("name")
                ->assertSee(e($demo->name));

        });
    }

This test will fail even when the text is clearly visible in the view. The test works once the<a> tag is removed.

Last updated 3 years ago.

s-dickson liked this thread

1

Sign in to participate in this thread!

Eventy

Your banner here too?

Stephen s-dickson Joined 14 Jan 2021

Moderators

We'd like to thank these amazing companies for supporting us

Your logo here?

Laravel.io

The Laravel portal for problem solving, knowledge sharing and community building.

© 2025 Laravel.io - All rights reserved.