When writing end-to-end tests with Laravel Dusk, you cannot mock your job dispatches like you use to do in Laravel 5.3 because the browser is a separate process and any tweaks you do inside your tests doesn’t exist when the browser hits the application. The browser will bootstrap the whole application again. My workaround for this was to simply assert that the job is in the queue to be dispatched with some simple steps. Setup a Dusk Queue that uses the Database Open your file and setup a Queue exclusively for Dusk. Keep your focus on the defined in the of the array and the defined in the index. config/queue.php connection name key queue name queue 'connections' => [ 'database' => \[ 'driver' => 'database', 'table' => 'jobs', 'queue' => 'default', 'retry\_after' => 90, \], **'dusk-connection' => \[ 'driver' => 'database', 'table' => 'jobs', 'queue' => 'dusk-queue', 'retry\_after' => 90, \],** ] Dusk Environment In your file, set to . . .env.dusk.local QUEUE_DRIVER dusk-connection Special attention to how Dusk swaps environments Make sure the Jobs table exists If you haven’t already, run to create a migration for the table and then run to run the newly created migration against your database. php artisan queue:table jobs php artisan migrate Add Custom assertion to DuskTestCase.php If you’ve installed Dusk, you noticed that it created the file . Let’s add a custom assertion into this file. We want to pop the next job available in the , which is the name chosen in the setup step. tests/DuskTestCase.php NOTE: dusk-queue queue _array|string $queued*/_ assertQueued($queued) { (!is_array($queued))$queued = func_get_args(); /*** Asserts that Jobs are in Queue to be dispatched.** @param public function if $repository = app()->make( \\Illuminate\\Contracts\\Queue\\Queue::_class_ ); **foreach** ($queued **as** $item) { $job = $repository->pop('dusk-queue'); $this->assertTrue($job->resolveName() == $item); } } Test your job! For this example, I created two sample jobs called and by running and . will accept multiple parameters, an array of parameters or just a single qualified class. MyFirstJob MySecondJob php artisan make:job MyFirstJob php artisan make:job MySecondJob assertQueued Route:: ('/', () {dispatch( \App\Jobs\MySecondJob);dispatch( \App\Jobs\MyFirstJob); view('welcome');}); get function new new return testBasicExample(){$this->browse( (Browser $browser) {$browser->visit('/')->assertSee('Laravel');}); public function function $this->assertQueued(\[MyFirstJob::_class_, MySecondJob::_class_\]); } Conclusion Dusk will navigate to your application, trigger some event that queues a job in the table using . You can, then, assert that this job is in the database from Dusk itself. But be aware: you need to make sure your tests builds a clean database and tears it down for each test, otherwise popping the next job might not work as expected. jobs QUEUE_DRIVER=dusk-connection