0
votes

Can't test applications with Laravel Dusk if the app uses Laravel Passport for authentication. It's always 404 and if you stop the test with ->stop() it starts working.

The app is located: localhost:3000 and all requests are proxied to api.example.test

I've tried to authenticate the user inside the test:

$this->actingAs(User::find(1), 'api');
$browser->loginAs(User::find(1));
Passport::actingAs($this->user);

But still the same.

That's not the only problem, I think the main issue is also that I can't log in with Dusk by filling out the form and click "login"

$browser->visit('/login')
   ->type('@email', '[email protected]')
   ->type('@password', 'password')
   ->click('@login-button')
   ->waitForLocation('/');

But again, if you stop the test with ->stop() you can manually click the button and it will log you in.

Is Laravel Dusk useless if your app does not use basic auth?

1

1 Answers

0
votes

Solved.

The problem was that my Dusk .env file had APP_URL=localhost:3000 where the front-end is located, but my APIs .env file had APP_URL=api.exmaple.com and that's why in my AuthController, I issued the token from env('APP_URL').'/oauth/token' <- which resulted in Dusk env to localhost:3000/oauth/token which is ofc 404

I changed that to env('API_URL') and added that value to my both .env files.