ip()) // In the test environment request()->ip() returns '127.0.0.1' $throttleKey = Str::transliterate(Str::lower($email).'|127.0.0.1'); RateLimiter::clear($throttleKey); // Make 5 failed attempts through the real Volt component for ($i = 0; $i < 5; $i++) { Volt::test('pages.auth.login') ->set('form.email', $email) ->set('form.password', 'wrong'.$i) ->call('login'); } // 6th attempt must be rate-limited — error on form.email with throttle message $component = Volt::test('pages.auth.login') ->set('form.email', $email) ->set('form.password', 'wrong6') ->call('login'); $component->assertHasErrors(['form.email']); $errors = $component->errors(); expect($errors->has('form.email'))->toBeTrue(); expect($errors->first('form.email'))->toContain('Too many login attempts'); });