Output:
Chunk ID: 676fe1
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 1182
Output:
<?php

use Database\Seeders\DatabaseSeeder;
use Illuminate\Foundation\Testing\RefreshDatabase;

uses(RefreshDatabase::class);

beforeEach(function (): void {
    $this->seed(DatabaseSeeder::class);
});

function storefrontBrowsingHost(): array
{
    return ['host' => 'shop.test'];
}

test('shows featured products on home page', function (): void {
    visit('/', storefrontBrowsingHost())
        ->assertSee('Acme Fashion')
        ->assertSee('Classic Cotton T-Shirt')
        ->assertSee('24.99')
        ->assertNoJavaScriptErrors();
});

test('shows collection with product grid', function (): void {
    visit('/collections/t-shirts', storefrontBrowsingHost())
        ->assertSee('T-Shirts')
        ->assertSee('Classic Cotton T-Shirt')
        ->assertNoJavaScriptErrors();
});

test('can navigate from collection to product', function (): void {
    visit('/collections/t-shirts', storefrontBrowsingHost())
        ->click('a[href$="/products/classic-cotton-t-shirt"]')
        ->wait(1)
        ->assertPathIs('/products/classic-cotton-t-shirt')
        ->assertSee('Classic Cotton T-Shirt')
        ->assertSee('24.99')
        ->assertSee('Add to cart')
        ->assertNoJavaScriptErrors();
});

test('shows product detail with variant options', function (): void {
    visit('/products/classic-cotton-t-shirt', storefrontBrowsingHost())
        ->assertSee('Classic Cotton T-Shirt')
        ->assertSee('24.99')
        ->assertSee('Size')
        ->assertSee('Color')
        ->assertNoJavaScriptErrors();
});

test('shows size and color option values', function (): void {
    visit('/products/classic-cotton-t-shirt', storefrontBrowsingHost())
        ->assertSee('S')
        ->assertSee('M')
        ->assertSee('L')
        ->assertSee('XL')
        ->assertSee('Black')
        ->assertSee('White')
        ->assertSee('Navy')
        ->assertNoJavaScriptErrors();
});

test('shows sale and compare at pricing for sale product', function (): void {
    visit('/products/premium-slim-fit-jeans', storefrontBrowsingHost())
        ->assertSee('Premium Slim Fit Jeans')
        ->assertSee('79.99')
        ->assertSee('99.99')
        ->assertPresent('.line-through')
        ->assertNoJavaScriptErrors();
});

test('shows search results for valid query', function (): void {
    visit('/search?q=cotton', storefrontBrowsingHost())
        ->assertSee('Classic Cotton T-Shirt')
        ->assertNoJavaScriptErrors();
});

test('shows no results message for invalid query', function (): void {
    visit('/search?q=zznonexistentproductzz', storefrontBrowsingHost())
        ->assertSee('No products found')
        ->assertNoJavaScriptErrors();
});

test('does not show draft products on storefront collections', function (): void {
    visit('/collections', storefrontBrowsingHost())
        ->assertDontSee('Unreleased Winter Jacket')
        ->assertNoJavaScriptErrors();
});

test('does not show draft products in search results', function (): void {
    visit('/search?q=draft', storefrontBrowsingHost())
        ->assertDontSee('Unreleased Winter Jacket')
        ->assertNoJavaScriptErrors();
});

test('shows out of stock messaging for deny policy product', function (): void {
    visit('/products/limited-edition-sneakers', storefrontBrowsingHost())
        ->assertSee('Limited Edition Sneakers')
        ->assertSee('Out of stock')
        ->assertSee('Sold out')
        ->assertButtonDisabled('button:has-text("Sold out")')
        ->assertDontSee('Add to cart')
        ->assertNoJavaScriptErrors();
});

test('shows backorder messaging for continue policy product', function (): void {
    visit('/products/backorder-denim-jacket', storefrontBrowsingHost())
        ->assertSee('Backorder Denim Jacket')
        ->assertSee('Available on backorder')
        ->assertSee('Add to cart')
        ->assertButtonEnabled('button:has-text("Add to cart")')
        ->assertNoJavaScriptErrors();
});

test('shows new arrivals collection', function (): void {
    visit('/collections/new-arrivals', storefrontBrowsingHost())
        ->assertSee('New Arrivals')
        ->assertNoJavaScriptErrors();
});

test('shows static about page', function (): void {
    visit('/pages/about', storefrontBrowsingHost())
        ->assertSee('About')
        ->assertNoJavaScriptErrors();
});

test('navigates between pages using the main navigation', function (): void {
    visit('/', storefrontBrowsingHost())
        ->hover('nav[aria-label="Main navigation"] a[href$="/collections"]')
        ->click('nav[aria-label="Main navigation"] a[href$="/collections/t-shirts"]')
        ->wait(1)
        ->assertPathIs('/collections/t-shirts')
        ->assertSee('T-Shirts')
        ->assertNoJavaScriptErrors();
});


The suite is in place. I’m running it now before touching progress so any selector or copy mismatch gets fixed against the real browser behavior, not just the static views.


php artisan test --compact tests/Browser/Storefront/BrowsingTest.php


Output:
Chunk ID: 51f85a
Wall time: 24.1894 seconds
Process exited with code 1
Original token count: 10412
Output:
Total output lines: 250

  ..⨯...........⨯
  ────────────────────────────────────────────────────────────────────────────
   FAILED  Tests\Browser\Storefront\BrowsingTest > can navigate from collect…
  Expected to see text [Classic Cotton T-Shirt] on the page initially with the url [http://127.0.0.1:62154/collections/t-shirts], but it was not found or not visible. A screenshot of the page has been saved to [Tests/Browser/Screenshots/can_navigate_from_collection_to_product].

The following exception was thrown by the HTTP server:
Symfony\Component\HttpKernel\Exception\NotFoundHttpException:

Stack trace:
#0 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(67): Illuminate\Foundation\Application->abort(404, '', Array)
#1 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(104): abort(404, '', Array)
#2 /Users/fabianwesner/Herd/shop/app/Http/Middleware/ResolveStore.php(26): abort_unless(NULL, 404)
#3 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\Http\Middleware\ResolveStore->handle(Object(Illuminate\Http\Request), Object(Closure))
#4 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#5 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#6 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(87): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#7 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#8 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(48): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#9 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#10 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(120): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#11 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(63): Illuminate\Session\Middleware\StartSession->handleStatefulRequest(Object(Illuminate\Http\Request), Object(Illuminate\Session\EncryptedStore), Object(Closure))
#12 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#13 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(36): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#14 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#15 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(74): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#16 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#17 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#18 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(821): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#19 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#20 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(764): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
#21 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(753): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#22 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#23 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Kernel->{closure:Illuminate\Foundation\Http\Kernel::dispatchToRouter():197}(Object(Illuminate\Http\Request))
#24 /Users/fabianwesner/Herd/shop/vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php(19): Illuminate\Pipeline\Pipeline->{closure:Illuminate\Pipeline\Pipeline::prepareDestination():178}(Object(Illuminate\Http\Request))
#25 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Livewire\Features\SupportDisablingBackButtonCache\DisableBackButtonCacheMiddleware->handle(Object(Illuminate\Http\Request), Object(Closure))
#26 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#27 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#28 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle(Object(Illuminate\Http\Request), Object(Closure))
#29 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#30 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#31 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\TrimStrings->handle(Object(Illuminate\Http\Request), Object(Closure))
#32 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#33 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
#34 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(109): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#35 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))
#36 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(74): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#37 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure))
#38 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#39 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#40 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#41 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\InvokeDeferredCallbacks->handle(Object(Illuminate\Http\Request), Object(Closure))
#42 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php(26): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#43 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\ValidatePathEncoding->handle(Object(Illuminate\Http\Request), Object(Closure))
#44 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#45 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#46 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#47 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Drivers/LaravelHttpServer.php(279): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#48 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/RequestHandler/ClosureRequestHandler.php(21): Pest\Browser\Drivers\LaravelHttpServer->handleRequest(Object(Amp\Http\Server\Request))
#49 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/CompressionMiddleware.php(56): Amp\Http\Server\RequestHandler\ClosureRequestHandler->handleRequest(Object(Amp\Http\Server\Request))
#50 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/Internal/MiddlewareRequestHandler.php(26): Amp\Http\Server\Middleware\CompressionMiddleware->handleRequest(Object(Amp\Http\Server\Request), Object(Amp\Http\Server\RequestHandler\ClosureRequestHandler))
#51 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/ConcurrencyLimitingMiddleware.php(40): Amp\Http\Server\Middleware\Internal\MiddlewareRequestHandler->handleRequest(Object(Amp\Http\Server\Request))
#52 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/Internal/MiddlewareRequestHandler.php(26): Amp\Http\Server\Middleware\ConcurrencyLimitingMiddleware->handleRequest(Object(Amp\Http\Server\Request), Object(Amp\Http\Server\Middleware\Internal\MiddlewareRequestHandler))
#53 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/AllowedMethodsMiddleware.php(59): Amp\Http\Server\Middleware\Internal\MiddlewareRequestHandler->handleRequest(Object(Amp\Http\Server\Request))
#54 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/Internal/MiddlewareRequestHandler.php(26): Amp\Http\Server\Middleware\AllowedMethodsMiddleware->handleRequest(Object(Amp\Http\Server\Request), Object(Amp\Http\Server\Middleware\Internal\MiddlewareRequestHandler))
#55 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Driver/Internal/AbstractHttpDriver.php(57): Amp\Http\Server\Middleware\Internal\MiddlewareRequestHandler->handleRequest(Object(Amp\Http\Server\Request))
#56 /Users/fabianwesner/Herd/shop/vendor/amphp/amp/src/functions.php(33): Amp\Http\Server\Driver\Internal\AbstractHttpDriver->handleRequest(Object(Amp\Http\Server\Request))
#57 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(430): {closure:Amp\async():23}(NULL, NULL, Array)
#58 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(621): Revolt\EventLoop\Internal\AbstractDriver->invokeMicrotasks()
#59 [internal function]: Revolt\EventLoop\Internal\AbstractDriver->{closure:Revolt\EventLoop\Internal\AbstractDriver::createCallbackFiber():565}()
#60 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/DriverSuspension.php(64): Fiber->resume(NULL)
#61 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(430): Revolt\EventLoop\Internal\DriverSuspension::{closure:Revolt\EventLoop\Internal\DriverSuspension::resume():61}()
#62 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(621): Revolt\EventLoop\Internal\AbstractDriver->invokeMicrotasks()
#63 [internal function]: Revolt\EventLoop\Internal\AbstractDriver->{closure:Revolt\EventLoop\Internal\AbstractDriver::createCallbackFiber():565}()
#64 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(503): Fiber->start()
#65 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(558): Revolt\EventLoop\Internal\AbstractDriver->invokeCallbacks()
#66 [internal function]: Revolt\EventLoop\Internal\AbstractDriver->{closure:Revolt\EventLoop\Internal\AbstractDriver::createLoopFiber():538}()
#67 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(96): Fiber->resume()
#68 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/DriverSuspension.php(117): Revolt\EventLoop\Internal\AbstractDriver->{closure:Revolt\EventLoop\Internal\AbstractDriver::__construct():90}()
#69 /Users/fabianwesner/Herd/shop/vendor/amphp/pipeline/src/Internal/QueueState.php(128): Revolt\EventLoop\Internal\DriverSuspension->suspend()
#70 /Users/fabianwesner/Herd/shop/vendor/amphp/pipeline/src/Internal/ConcurrentQueueIterator.php(30): Amp\Pipeline\Internal\QueueState->continue(NULL)
#71 /Users/fabianwesner/Herd/shop/vendor/amphp/websocket/src/Rfc6455Client.php(92): Amp\Pipeline\Internal\ConcurrentQueueIterator->continue(NULL)
#72 /Users/fabianwesner/Herd/shop/vendor/amphp/websocket-client/src/Rfc6455Connection.php(44): Amp\Websocket\Rfc6455Client->receive(NULL)
#73 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Client.php(136): Amp\Websocket\Client\Rfc6455Connection->receive()
#74 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Client.php(90): Pest\Browser\Playwright\Client->fetch(Object(Amp\Websocket\Client\Rfc6455Connection))
#75 [internal function]: Pest\Browser\Playwright\Client->execute('frame@59c8d3d90...', 'click', Array)
#76 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Concerns/InteractsWithPlaywright.php(123): iterator_to_array(Object(Generator))
#77 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Locator.php(137): Pest\Browser\Playwright\Locator->processVoidResponse(Object(Generator))
#78 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/Concerns/InteractsWithElements.php(19): Pest\Browser\Playwright\Locator->click()
#79 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/AwaitableWebpage.php(55): Pest\Browser\Api\Webpage->click('a[href$="/produ...')
#80 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Playwright.php(230): Pest\Browser\Api\AwaitableWebpage->{closure:Pest\Browser\Api\AwaitableWebpage::__call():55}()
#81 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Execution.php(149): Pest\Browser\Playwright\Playwright::usingTimeout(1000, Object(Closure))
#82 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/AwaitableWebpage.php(53): Pest\Browser\Execution->waitForExpectation(Object(Closure))
#83 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php(48): Pest\Browser\Api\AwaitableWebpage->__call('click', Array)
#84 /Users/fabianwesner/Herd/shop/tests/Browser/Storefront/BrowsingTest.php(34): Pest\Browser\Api\PendingAwaitablePage->__call('click', Array)
#85 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Browser\Storefront\BrowsingTest->{closure:/Users/fabianwesner/Herd/shop/tests/Browser/Storefront/BrowsingTest.php:32}()
#86 [internal function]: P\Tests\Browser\Storefront\BrowsingTest->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}()
#87 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Concerns/Testable.php(429): call_user_func_array(Object(Closure), Array)
#88 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Support/ExceptionTrace.php(26): P\Tests\Browser\Storefront\BrowsingTest->{closure:Pest\Concerns\Testable::__callClosure():429}()
#89 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Concerns/Testable.php(429): Pest\Support\ExceptionTrace::ensure(Object(Closure))
#90 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Concerns/Testable.php(331): P\Tests\Browser\Storefront\BrowsingTest->__callClosure(Object(Closure), Array)
#91 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(35): P\Tests\Browser\Storefront\BrowsingTest->__runTest(Object(Closure))
#92 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestCase.php(1332): P\Tests\Browser\Storefront\BrowsingTest->__pest_evaluable_can_navigate_from_collection_to_product()
#93 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestCase.php(519): PHPUnit\Framework\TestCase->runTest()
#94 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(99): PHPUnit\Framework\TestCase->runBare()
#95 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestCase.php(359): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Browser\Storefront\BrowsingTest))
#96 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestSuite.php(374): PHPUnit\Framework\TestCase->run()
#97 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run()
#98 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/TextUI/Application.php(229): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCach…412 tokens truncated…/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(67): Illuminate\Foundation\Application->abort(404, '', Array)
#1 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(104): abort(404, '', Array)
#2 /Users/fabianwesner/Herd/shop/app/Http/Middleware/ResolveStore.php(26): abort_unless(NULL, 404)
#3 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\Http\Middleware\ResolveStore->handle(Object(Illuminate\Http\Request), Object(Closure))
#4 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#5 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#6 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(87): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#7 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#8 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(48): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#9 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#10 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(120): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#11 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(63): Illuminate\Session\Middleware\StartSession->handleStatefulRequest(Object(Illuminate\Http\Request), Object(Illuminate\Session\EncryptedStore), Object(Closure))
#12 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#13 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(36): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#14 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#15 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(74): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#16 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#17 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#18 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(821): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#19 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#20 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(764): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
#21 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(753): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#22 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#23 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Kernel->{closure:Illuminate\Foundation\Http\Kernel::dispatchToRouter():197}(Object(Illuminate\Http\Request))
#24 /Users/fabianwesner/Herd/shop/vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php(19): Illuminate\Pipeline\Pipeline->{closure:Illuminate\Pipeline\Pipeline::prepareDestination():178}(Object(Illuminate\Http\Request))
#25 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Livewire\Features\SupportDisablingBackButtonCache\DisableBackButtonCacheMiddleware->handle(Object(Illuminate\Http\Request), Object(Closure))
#26 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#27 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#28 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle(Object(Illuminate\Http\Request), Object(Closure))
#29 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#30 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#31 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\TrimStrings->handle(Object(Illuminate\Http\Request), Object(Closure))
#32 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#33 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
#34 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(109): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#35 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))
#36 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(74): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#37 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure))
#38 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#39 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#40 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#41 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\InvokeDeferredCallbacks->handle(Object(Illuminate\Http\Request), Object(Closure))
#42 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php(26): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#43 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\ValidatePathEncoding->handle(Object(Illuminate\Http\Request), Object(Closure))
#44 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#45 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#46 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#47 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Drivers/LaravelHttpServer.php(279): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#48 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/RequestHandler/ClosureRequestHandler.php(21): Pest\Browser\Drivers\LaravelHttpServer->handleRequest(Object(Amp\Http\Server\Request))
#49 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/CompressionMiddleware.php(56): Amp\Http\Server\RequestHandler\ClosureRequestHandler->handleRequest(Object(Amp\Http\Server\Request))
#50 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/Internal/MiddlewareRequestHandler.php(26): Amp\Http\Server\Middleware\CompressionMiddleware->handleRequest(Object(Amp\Http\Server\Request), Object(Amp\Http\Server\RequestHandler\ClosureRequestHandler))
#51 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/ConcurrencyLimitingMiddleware.php(40): Amp\Http\Server\Middleware\Internal\MiddlewareRequestHandler->handleRequest(Object(Amp\Http\Server\Request))
#52 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/Internal/MiddlewareRequestHandler.php(26): Amp\Http\Server\Middleware\ConcurrencyLimitingMiddleware->handleRequest(Object(Amp\Http\Server\Request), Object(Amp\Http\Server\Middleware\Internal\MiddlewareRequestHandler))
#53 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/AllowedMethodsMiddleware.php(59): Amp\Http\Server\Middleware\Internal\MiddlewareRequestHandler->handleRequest(Object(Amp\Http\Server\Request))
#54 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/Internal/MiddlewareRequestHandler.php(26): Amp\Http\Server\Middleware\AllowedMethodsMiddleware->handleRequest(Object(Amp\Http\Server\Request), Object(Amp\Http\Server\Middleware\Internal\MiddlewareRequestHandler))
#55 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Driver/Internal/AbstractHttpDriver.php(57): Amp\Http\Server\Middleware\Internal\MiddlewareRequestHandler->handleRequest(Object(Amp\Http\Server\Request))
#56 /Users/fabianwesner/Herd/shop/vendor/amphp/amp/src/functions.php(33): Amp\Http\Server\Driver\Internal\AbstractHttpDriver->handleRequest(Object(Amp\Http\Server\Request))
#57 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(430): {closure:Amp\async():23}(NULL, NULL, Array)
#58 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(621): Revolt\EventLoop\Internal\AbstractDriver->invokeMicrotasks()
#59 [internal function]: Revolt\EventLoop\Internal\AbstractDriver->{closure:Revolt\EventLoop\Internal\AbstractDriver::createCallbackFiber():565}()
#60 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/DriverSuspension.php(64): Fiber->resume(NULL)
#61 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(430): Revolt\EventLoop\Internal\DriverSuspension::{closure:Revolt\EventLoop\Internal\DriverSuspension::resume():61}()
#62 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(621): Revolt\EventLoop\Internal\AbstractDriver->invokeMicrotasks()
#63 [internal function]: Revolt\EventLoop\Internal\AbstractDriver->{closure:Revolt\EventLoop\Internal\AbstractDriver::createCallbackFiber():565}()
#64 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(503): Fiber->start()
#65 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(558): Revolt\EventLoop\Internal\AbstractDriver->invokeCallbacks()
#66 [internal function]: Revolt\EventLoop\Internal\AbstractDriver->{closure:Revolt\EventLoop\Internal\AbstractDriver::createLoopFiber():538}()
#67 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(96): Fiber->resume()
#68 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/DriverSuspension.php(117): Revolt\EventLoop\Internal\AbstractDriver->{closure:Revolt\EventLoop\Internal\AbstractDriver::__construct():90}()
#69 /Users/fabianwesner/Herd/shop/vendor/amphp/pipeline/src/Internal/QueueState.php(128): Revolt\EventLoop\Internal\DriverSuspension->suspend()
#70 /Users/fabianwesner/Herd/shop/vendor/amphp/pipeline/src/Internal/ConcurrentQueueIterator.php(30): Amp\Pipeline\Internal\QueueState->continue(NULL)
#71 /Users/fabianwesner/Herd/shop/vendor/amphp/websocket/src/Rfc6455Client.php(92): Amp\Pipeline\Internal\ConcurrentQueueIterator->continue(NULL)
#72 /Users/fabianwesner/Herd/shop/vendor/amphp/websocket-client/src/Rfc6455Connection.php(44): Amp\Websocket\Rfc6455Client->receive(NULL)
#73 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Client.php(136): Amp\Websocket\Client\Rfc6455Connection->receive()
#74 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Client.php(90): Pest\Browser\Playwright\Client->fetch(Object(Amp\Websocket\Client\Rfc6455Connection))
#75 [internal function]: Pest\Browser\Playwright\Client->execute('frame@780b255c6...', 'click', Array)
#76 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Concerns/InteractsWithPlaywright.php(123): iterator_to_array(Object(Generator))
#77 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Locator.php(137): Pest\Browser\Playwright\Locator->processVoidResponse(Object(Generator))
#78 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/Concerns/InteractsWithElements.php(19): Pest\Browser\Playwright\Locator->click()
#79 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/AwaitableWebpage.php(55): Pest\Browser\Api\Webpage->click('nav[aria-label=...')
#80 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Playwright.php(230): Pest\Browser\Api\AwaitableWebpage->{closure:Pest\Browser\Api\AwaitableWebpage::__call():55}()
#81 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Execution.php(149): Pest\Browser\Playwright\Playwright::usingTimeout(1000, Object(Closure))
#82 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/AwaitableWebpage.php(53): Pest\Browser\Execution->waitForExpectation(Object(Closure))
#83 /Users/fabianwesner/Herd/shop/tests/Browser/Storefront/BrowsingTest.php(131): Pest\Browser\Api\AwaitableWebpage->__call('click', Array)
#84 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Browser\Storefront\BrowsingTest->{closure:/Users/fabianwesner/Herd/shop/tests/Browser/Storefront/BrowsingTest.php:128}()
#85 [internal function]: P\Tests\Browser\Storefront\BrowsingTest->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}()
#86 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Concerns/Testable.php(429): call_user_func_array(Object(Closure), Array)
#87 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Support/ExceptionTrace.php(26): P\Tests\Browser\Storefront\BrowsingTest->{closure:Pest\Concerns\Testable::__callClosure():429}()
#88 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Concerns/Testable.php(429): Pest\Support\ExceptionTrace::ensure(Object(Closure))
#89 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Concerns/Testable.php(331): P\Tests\Browser\Storefront\BrowsingTest->__callClosure(Object(Closure), Array)
#90 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(143): P\Tests\Browser\Storefront\BrowsingTest->__runTest(Object(Closure))
#91 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestCase.php(1332): P\Tests\Browser\Storefront\BrowsingTest->__pest_evaluable_navigates_between_pages_using_the_main_navigation()
#92 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestCase.php(519): PHPUnit\Framework\TestCase->runTest()
#93 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(99): PHPUnit\Framework\TestCase->runBare()
#94 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestCase.php(359): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Browser\Storefront\BrowsingTest))
#95 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestSuite.php(374): PHPUnit\Framework\TestCase->run()
#96 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run()
#97 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/TextUI/Application.php(229): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite))
#98 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array)
#99 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/bin/pest(184): Pest\Kernel->handle(Array, Array)
#100 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/bin/pest(192): {closure:/Users/fabianwesner/Herd/shop/vendor/pestphp/pest/bin/pest:18}()
#101 {main}

  at tests/Browser/Storefront/BrowsingTest.php:134
    130▕         ->hover('nav[aria-label="Main navigation"] a[href$="/collections"]')
    131▕         ->click('nav[aria-label="Main navigation"] a[href$="/collections/t-shirts"]')
    132▕         ->wait(1)
    133▕         ->assertPathIs('/collections/t-shirts')
  ➜ 134▕         ->assertSee('T-Shirts')
    135▕         ->assertNoJavaScriptErrors();
    136▕ });
    137▕

  Tests:    2 failed, 13 passed (50 assertions)
  Duration: 23.85s


php artisan test --compact tests/Browser/Storefront/BrowsingTest.php

  ..⨯...........⨯
  ────────────────────────────────────────────────────────────────────────────
   FAILED  Tests\Browser\Storefront\BrowsingTest > can navigate from collect…
  Expected to see text [Classic Cotton T-Shirt] on the page initially with the url [http://127.0.0.1:62154/collections/t-shirts], but it was not found or not visible. A screenshot of the page has been saved to [Tests/Browser/Screenshots/can_navigate_from_collection_to_product].

The following exception was thrown by the HTTP server:
Symfony\Component\HttpKernel\Exception\NotFoundHttpException:

Stack trace:
#0 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(67): Illuminate\Foundation\Application->abort(404, '', Array)
#1 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(104): abort(404, '', Array)
#2 /Users/fabianwesner/Herd/shop/app/Http/Middleware/ResolveStore.php(26): abort_unless(NULL, 404)
#3 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\Http\Middleware\ResolveStore->handle(Object(Illuminate\Http\Request), Object(Closure))
#4 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#5 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#6 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(87): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#7 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#8 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(48): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#9 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#10 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(120): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#11 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(63): Illuminate\Session\Middleware\StartSession->handleStatefulRequest(Object(Illuminate\Http\Request), Object(Illuminate\Session\EncryptedStore), Object(Closure))
#12 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#13 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(36): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#14 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#15 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(74): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#16 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#17 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#18 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(821): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#19 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#20 /Users/fabianwesner/Herd/shop/vendor/laravel/frame…31473 chars truncated…\Rfc6455Client->receive(NULL)
#73 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Client.php(136): Amp\Websocket\Client\Rfc6455Connection->receive()
#74 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Client.php(90): Pest\Browser\Playwright\Client->fetch(Object(Amp\Websocket\Client\Rfc6455Connection))
#75 [internal function]: Pest\Browser\Playwright\Client->execute('frame@780b255c6...', 'click', Array)
#76 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Concerns/InteractsWithPlaywright.php(123): iterator_to_array(Object(Generator))
#77 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Locator.php(137): Pest\Browser\Playwright\Locator->processVoidResponse(Object(Generator))
#78 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/Concerns/InteractsWithElements.php(19): Pest\Browser\Playwright\Locator->click()
#79 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/AwaitableWebpage.php(55): Pest\Browser\Api\Webpage->click('nav[aria-label=...')
#80 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Playwright.php(230): Pest\Browser\Api\AwaitableWebpage->{closure:Pest\Browser\Api\AwaitableWebpage::__call():55}()
#81 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Execution.php(149): Pest\Browser\Playwright\Playwright::usingTimeout(1000, Object(Closure))
#82 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/AwaitableWebpage.php(53): Pest\Browser\Execution->waitForExpectation(Object(Closure))
#83 /Users/fabianwesner/Herd/shop/tests/Browser/Storefront/BrowsingTest.php(131): Pest\Browser\Api\AwaitableWebpage->__call('click', Array)
#84 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Browser\Storefront\BrowsingTest->{closure:/Users/fabianwesner/Herd/shop/tests/Browser/Storefront/BrowsingTest.php:128}()
#85 [internal function]: P\Tests\Browser\Storefront\BrowsingTest->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}()
#86 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Concerns/Testable.php(429): call_user_func_array(Object(Closure), Array)
#87 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Support/ExceptionTrace.php(26): P\Tests\Browser\Storefront\BrowsingTest->{closure:Pest\Concerns\Testable::__callClosure():429}()
#88 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Concerns/Testable.php(429): Pest\Support\ExceptionTrace::ensure(Object(Closure))
#89 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Concerns/Testable.php(331): P\Tests\Browser\Storefront\BrowsingTest->__callClosure(Object(Closure), Array)
#90 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(143): P\Tests\Browser\Storefront\BrowsingTest->__runTest(Object(Closure))
#91 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestCase.php(1332): P\Tests\Browser\Storefront\BrowsingTest->__pest_evaluable_navigates_between_pages_using_the_main_navigation()
#92 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestCase.php(519): PHPUnit\Framework\TestCase->runTest()
#93 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(99): PHPUnit\Framework\TestCase->runBare()
#94 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestCase.php(359): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Browser\Storefront\BrowsingTest))
#95 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestSuite.php(374): PHPUnit\Framework\TestCase->run()
#96 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run()
#97 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/TextUI/Application.php(229): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite))
#98 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array)
#99 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/bin/pest(184): Pest\Kernel->handle(Array, Array)
#100 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/bin/pest(192): {closure:/Users/fabianwesner/Herd/shop/vendor/pestphp/pest/bin/pest:18}()
#101 {main}

  at tests/Browser/Storefront/BrowsingTest.php:134
    130▕         ->hover('nav[aria-label="Main navigation"] a[href$="/collections"]')
    131▕         ->click('nav[aria-label="Main navigation"] a[href$="/collections/t-shirts"]')
    132▕         ->wait(1)
    133▕         ->assertPathIs('/collections/t-shirts')
  ➜ 134▕         ->assertSee('T-Shirts')
    135▕         ->assertNoJavaScriptErrors();
    136▕ });
    137▕

  Tests:    2 failed, 13 passed (50 assertions)
  Duration: 23.85s


The browser run exposed a real navigation problem in the tests: direct clicks follow absolute app URLs in the rendered anchors, which drops the test host and trips store resolution. I’m tightening the browser interactions so they still exercise user navigation while preserving the storefront host.


php artisan test --compact tests/Browser/Storefront/BrowsingTest.php --filter="can navigate from collection to product"


find tests/Browser/Screenshots -maxdepth 1 -type f -print


Output:
Chunk ID: 73acd9
Wall time: 0.1709 seconds
Process exited with code 0
Original token count: 21
Output:

  app.url ................................................... http://shop.test


/bin/zsh
-lc
php artisan config:show app.url


Output:
Chunk ID: cbadf3
Wall time: 8.1660 seconds
Process exited with code 1
Original token count: 5241
Output:

  ⨯
  ────────────────────────────────────────────────────────────────────────────
   FAILED  Tests\Browser\Storefront\BrowsingTest > can navigate from collect…
  Expected to see text [Classic Cotton T-Shirt] on the page initially with the url [http://127.0.0.1:62296/collections/t-shirts], but it was not found or not visible. A screenshot of the page has been saved to [Tests/Browser/Screenshots/can_navigate_from_collection_to_product].

The following exception was thrown by the HTTP server:
Symfony\Component\HttpKernel\Exception\NotFoundHttpException:

Stack trace:
#0 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(67): Illuminate\Foundation\Application->abort(404, '', Array)
#1 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(104): abort(404, '', Array)
#2 /Users/fabianwesner/Herd/shop/app/Http/Middleware/ResolveStore.php(26): abort_unless(NULL, 404)
#3 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\Http\Middleware\ResolveStore->handle(Object(Illuminate\Http\Request), Object(Closure))
#4 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#5 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#6 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(87): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#7 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#8 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(48): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#9 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#10 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(120): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#11 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(63): Illuminate\Session\Middleware\StartSession->handleStatefulRequest(Object(Illuminate\Http\Request), Object(Illuminate\Session\EncryptedStore), Object(Closure))
#12 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#13 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(36): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#14 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#15 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(74): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#16 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#17 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#18 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(821): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#19 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#20 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(764): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
#21 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(753): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#22 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#23 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\Foundation\Http\Kernel->{closure:Illuminate\Foundation\Http\Kernel::dispatchToRouter():197}(Object(Illuminate\Http\Request))
#24 /Users/fabianwesner/Herd/shop/vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php(19): Illuminate\Pipeline\Pipeline->{closure:Illuminate\Pipeline\Pipeline::prepareDestination():178}(Object(Illuminate\Http\Request))
#25 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Livewire\Features\SupportDisablingBackButtonCache\DisableBackButtonCacheMiddleware->handle(Object(Illuminate\Http\Request), Object(Closure))
#26 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#27 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#28 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle(Object(Illuminate\Http\Request), Object(Closure))
#29 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#30 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#31 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\TrimStrings->handle(Object(Illuminate\Http\Request), Object(Closure))
#32 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#33 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
#34 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(109): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#35 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))
#36 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(74): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#37 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure))
#38 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#39 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#40 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#41 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\InvokeDeferredCallbacks->handle(Object(Illuminate\Http\Request), Object(Closure))
#42 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php(26): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#43 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Http\Middleware\ValidatePathEncoding->handle(Object(Illuminate\Http\Request), Object(Closure))
#44 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#45 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#46 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#47 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Drivers/LaravelHttpServer.php(279): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#48 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/RequestHandler/ClosureRequestHandler.php(21): Pest\Browser\Drivers\LaravelHttpServer->handleRequest(Object(Amp\Http\Server\Request))
#49 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/CompressionMiddleware.php(56): Amp\Http\Server\RequestHandler\ClosureRequestHandler->handleRequest(Object(Amp\Http\Server\Request))
#50 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/Internal/MiddlewareRequestHandler.php(26): Amp\Http\Server\Middleware\CompressionMiddleware->handleRequest(Object(Amp\Http\Server\Request), Object(Amp\Http\Server\RequestHandler\ClosureRequestHandler))
#51 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/ConcurrencyLimitingMiddleware.php(40): Amp\Http\Server\Middleware\Internal\MiddlewareRequestHandler->handleRequest(Object(Amp\Http\Server\Request))
#52 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/Internal/MiddlewareRequestHandler.php(26): Amp\Http\Server\Middleware\ConcurrencyLimitingMiddleware->handleRequest(Object(Amp\Http\Server\Request), Object(Amp\Http\Server\Middleware\Internal\MiddlewareRequestHandler))
#53 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/AllowedMethodsMiddleware.php(59): Amp\Http\Server\Middleware\Internal\MiddlewareRequestHandler->handleRequest(Object(Amp\Http\Server\Request))
#54 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Middleware/Internal/MiddlewareRequestHandler.php(26): Amp\Http\Server\Middleware\AllowedMethodsMiddleware->handleRequest(Object(Amp\Http\Server\Request), Object(Amp\Http\Server\Middleware\Internal\MiddlewareRequestHandler))
#55 /Users/fabianwesner/Herd/shop/vendor/amphp/http-server/src/Driver/Internal/AbstractHttpDriver.php(57): Amp\Http\Server\Middleware\Internal\MiddlewareRequestHandler->handleRequest(Object(Amp\Http\Server\Request))
#56 /Users/fabianwesner/Herd/shop/vendor/amphp/amp/src/functions.php(33): Amp\Http\Server\Driver\Internal\AbstractHttpDriver->handleRequest(Object(Amp\Http\Server\Request))
#57 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(430): {closure:Amp\async():23}(NULL, NULL, Array)
#58 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(621): Revolt\EventLoop\Internal\AbstractDriver->invokeMicrotasks()
#59 [internal function]: Revolt\EventLoop\Internal\AbstractDriver->{closure:Revolt\EventLoop\Internal\AbstractDriver::createCallbackFiber():565}()
#60 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/DriverSuspension.php(64): Fiber->resume(NULL)
#61 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(430): Revolt\EventLoop\Internal\DriverSuspension::{closure:Revolt\EventLoop\Internal\DriverSuspension::resume():61}()
#62 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(621): Revolt\EventLoop\Internal\AbstractDriver->invokeMicrotasks()
#63 [internal function]: Revolt\EventLoop\Internal\AbstractDriver->{closure:Revolt\EventLoop\Internal\AbstractDriver::createCallbackFiber():565}()
#64 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(503): Fiber->start()
#65 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(558): Revolt\EventLoop\Internal\AbstractDriver->invokeCallbacks()
#66 [internal function]: Revolt\EventLoop\Internal\AbstractDriver->{closure:Revolt\EventLoop\Internal\AbstractDriver::createLoopFiber():538}()
#67 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(96): Fiber->resume()
#68 /Users/fabianwesner/Herd/shop/vendor/revolt/event-loop/src/EventLoop/Internal/DriverSuspension.php(117): Revolt\EventLoop\Internal\AbstractDriver->{closure:Revolt\EventLoop\Internal\AbstractDriver::__construct():90}()
#69 /Users/fabianwesner/Herd/shop/vendor/amphp/pipeline/src/Internal/QueueState.php(128): Revolt\EventLoop\Internal\DriverSuspension->suspend()
#70 /Users/fabianwesner/Herd/shop/vendor/amphp/pipeline/src/Internal/ConcurrentQueueIterator.php(30): Amp\Pipeline\Internal\QueueState->continue(NULL)
#71 /Users/fabianwesner/Herd/shop/vendor/amphp/websocket/src/Rfc6455Client.php(92): Amp\Pipeline\Internal\ConcurrentQueueIterator->continue(NULL)
#72 /Users/fabianwesner/Herd/shop/vendor/amphp/websocket-client/src/Rfc6455Connection.php(44): Amp\Websocket\Rfc6455Client->receive(NULL)
#73 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Client.php(136): Amp\Websocket\Client\Rfc6455Connection->receive()
#74 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Client.php(90): Pest\Browser\Playwright\Client->fetch(Object(Amp\Websocket\Client\Rfc6455Connection))
#75 [internal function]: Pest\Browser\Playwright\Client->execute('frame@f95354a6e...', 'click', Array)
#76 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Concerns/InteractsWithPlaywright.php(123): iterator_to_array(Object(Generator))
#77 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Locator.php(137): Pest\Browser\Playwright\Locator->processVoidResponse(Object(Generator))
#78 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/Concerns/InteractsWithElements.php(19): Pest\Browser\Playwright\Locator->click()
#79 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/AwaitableWebpage.php(55): Pest\Browser\Api\Webpage->click('a[href$="/produ...')
#80 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Playwright.php(230): Pest\Browser\Api\AwaitableWebpage->{closure:Pest\Browser\Api\AwaitableWebpage::__call():55}()
#81 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Execution.php(149): Pest\Browser\Playwright\Playwright::usingTimeout(1000, Object(Closure))
#82 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/AwaitableWebpage.php(53): Pest\Browser\Execution->waitForExpectation(Object(Closure))
#83 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php(48): Pest\Browser\Api\AwaitableWebpage->__call('click', Array)
#84 /Users/fabianwesner/Herd/shop/tests/Browser/Storefront/BrowsingTest.php(34): Pest\Browser\Api\PendingAwaitablePage->__call('click', Array)
#85 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Browser\Storefront\BrowsingTest->{closure:/Users/fabianwesner/Herd/shop/tests/Browser/Storefront/BrowsingTest.php:32}()
#86 [internal function]: P\Tests\Browser\Storefront\BrowsingTest->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}()
#87 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Concerns/Testable.php(429): call_user_func_array(Object(Closure), Array)
#88 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Support/ExceptionTrace.php(26): P\Tests\Browser\Storefront\BrowsingTest->{closure:Pest\Concerns\Testable::__callClosure():429}()
#89 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Concerns/Testable.php(429): Pest\Support\ExceptionTrace::ensure(Object(Closure))
#90 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Concerns/Testable.php(331): P\Tests\Browser\Storefront\BrowsingTest->__callClosure(Object(Closure), Array)
#91 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(35): P\Tests\Browser\Storefront\BrowsingTest->__runTest(Object(Closure))
#92 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestCase.php(1332): P\Tests\Browser\Storefront\BrowsingTest->__pest_evaluable_can_navigate_from_collection_to_product()
#93 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestCase.php(519): PHPUnit\Framework\TestCase->runTest()
#94 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(99): PHPUnit\Framework\TestCase->runBare()
#95 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestCase.php(359): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Browser\Storefront\BrowsingTest))
#96 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestSuite.php(374): PHPUnit\Framework\TestCase->run()
#97 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run()
#98 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/TextUI/Application.php(229): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite))
#99 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array)
#100 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/bin/pest(184): Pest\Kernel->handle(Array, Array)
#101 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/bin/pest(192): {closure:/Users/fabianwesner/Herd/shop/vendor/pestphp/pest/bin/pest:18}()
#102 {main}

  at tests/Browser/Storefront/BrowsingTest.php:37
     33▕     visit('/collections/t-shirts', storefrontBrowsingHost())
     34▕         ->click('a[href$="/products/classic-cotton-t-shirt"]')
     35▕         ->wait(1)
     36▕         ->assertPathIs('/products/classic-cotton-t-shirt')
  ➜  37▕         ->assertSee('Classic Cotton T-Shirt')
     38▕         ->assertSee('24.99')
     39▕         ->assertSee('Add to cart')
     40▕         ->assertNoJavaScriptErrors();
     41▕ });

  Tests:    1 failed (1 assertions)
  Duration: 7.81s


Output:
Chunk ID: 336911
Wall time: 0.0000 seconds
Process exited with code 0
Original token count: 38
Output:
tests/Browser/Screenshots/navigates_between_pages_using_the_main_navigation.png
tests/Browser/Screenshots/can_navigate_from_collection_to_product.png


php artisan test --compact tests/Browser/Storefront/BrowsingTest.php --filter="can navigate from collection to product"

  ⨯
  ────────────────────────────────────────────────────────────────────────────
   FAILED  Tests\Browser\Storefront\BrowsingTest > can navigate from collect…
  Expected to see text [Classic Cotton T-Shirt] on the page initially with the url [http://127.0.0.1:62296/collections/t-shirts], but it was not found or not visible. A screenshot of the page has been saved to [Tests/Browser/Screenshots/can_navigate_from_collection_to_product].

The following exception was thrown by the HTTP server:
Symfony\Component\HttpKernel\Exception\NotFoundHttpException:

Stack trace:
#0 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(67): Illuminate\Foundation\Application->abort(404, '', Array)
#1 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(104): abort(404, '', Array)
#2 /Users/fabianwesner/Herd/shop/app/Http/Middleware/ResolveStore.php(26): abort_unless(NULL, 404)
#3 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\Http\Middleware\ResolveStore->handle(Object(Illuminate\Http\Request), Object(Closure))
#4 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#5 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#6 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(87): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#7 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#8 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(48): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#9 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#10 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(120): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#11 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(63): Illuminate\Session\Middleware\StartSession->handleStatefulRequest(Object(Illuminate\Http\Request), Object(Illuminate\Session\EncryptedStore), Object(Closure))
#12 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#13 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(36): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#14 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#15 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(74): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#16 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#17 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():194}:195}(Object(Illuminate\Http\Request))
#18 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(821): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#19 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#20 /Users/fabianwesner/Herd/shop/vendor/laravel/framework/src/Illumin…10961 chars truncated…/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Client.php(90): Pest\Browser\Playwright\Client->fetch(Object(Amp\Websocket\Client\Rfc6455Connection))
#75 [internal function]: Pest\Browser\Playwright\Client->execute('frame@f95354a6e...', 'click', Array)
#76 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Concerns/InteractsWithPlaywright.php(123): iterator_to_array(Object(Generator))
#77 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Locator.php(137): Pest\Browser\Playwright\Locator->processVoidResponse(Object(Generator))
#78 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/Concerns/InteractsWithElements.php(19): Pest\Browser\Playwright\Locator->click()
#79 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/AwaitableWebpage.php(55): Pest\Browser\Api\Webpage->click('a[href$="/produ...')
#80 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Playwright/Playwright.php(230): Pest\Browser\Api\AwaitableWebpage->{closure:Pest\Browser\Api\AwaitableWebpage::__call():55}()
#81 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Execution.php(149): Pest\Browser\Playwright\Playwright::usingTimeout(1000, Object(Closure))
#82 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/AwaitableWebpage.php(53): Pest\Browser\Execution->waitForExpectation(Object(Closure))
#83 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php(48): Pest\Browser\Api\AwaitableWebpage->__call('click', Array)
#84 /Users/fabianwesner/Herd/shop/tests/Browser/Storefront/BrowsingTest.php(34): Pest\Browser\Api\PendingAwaitablePage->__call('click', Array)
#85 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Browser\Storefront\BrowsingTest->{closure:/Users/fabianwesner/Herd/shop/tests/Browser/Storefront/BrowsingTest.php:32}()
#86 [internal function]: P\Tests\Browser\Storefront\BrowsingTest->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}()
#87 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Concerns/Testable.php(429): call_user_func_array(Object(Closure), Array)
#88 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Support/ExceptionTrace.php(26): P\Tests\Browser\Storefront\BrowsingTest->{closure:Pest\Concerns\Testable::__callClosure():429}()
#89 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Concerns/Testable.php(429): Pest\Support\ExceptionTrace::ensure(Object(Closure))
#90 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Concerns/Testable.php(331): P\Tests\Browser\Storefront\BrowsingTest->__callClosure(Object(Closure), Array)
#91 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(35): P\Tests\Browser\Storefront\BrowsingTest->__runTest(Object(Closure))
#92 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestCase.php(1332): P\Tests\Browser\Storefront\BrowsingTest->__pest_evaluable_can_navigate_from_collection_to_product()
#93 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestCase.php(519): PHPUnit\Framework\TestCase->runTest()
#94 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(99): PHPUnit\Framework\TestCase->runBare()
#95 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestCase.php(359): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Browser\Storefront\BrowsingTest))
#96 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/Framework/TestSuite.php(374): PHPUnit\Framework\TestCase->run()
#97 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run()
#98 /Users/fabianwesner/Herd/shop/vendor/phpunit/phpunit/src/TextUI/Application.php(229): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite))
#99 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array)
#100 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/bin/pest(184): Pest\Kernel->handle(Array, Array)
#101 /Users/fabianwesner/Herd/shop/vendor/pestphp/pest/bin/pest(192): {closure:/Users/fabianwesner/Herd/shop/vendor/pestphp/pest/bin/pest:18}()
#102 {main}

  at tests/Browser/Storefront/BrowsingTest.php:37
     33▕     visit('/collections/t-shirts', storefrontBrowsingHost())
     34▕         ->click('a[href$="/products/classic-cotton-t-shirt"]')
     35▕         ->wait(1)
     36▕         ->assertPathIs('/products/classic-cotton-t-shirt')
  ➜  37▕         ->assertSee('Classic Cotton T-Shirt')
     38▕         ->assertSee('24.99')
     39▕         ->assertSee('Add to cart')
     40▕         ->assertNoJavaScriptErrors();
     41▕ });

  Tests:    1 failed (1 assertions)
  Duration: 7.81s


rg "function visit|withHost|host" vendor/pestphp/pest-plugin-browser/src -n


rg "function visit|withHost|host" vendor/pestphp/pest-plugin-browser/src -n

rg 'function visit|withHost|host' vendor/pestphp/pest-plugin-browser/src -n

Question: function visit|withHost|host

vendor/pestphp/pest-plugin-browser/src/Configuration.php:99:     * Sets the host for the server.
vendor/pestphp/pest-plugin-browser/src/Configuration.php:101:    public function withHost(?string $host): self
vendor/pestphp/pest-plugin-browser/src/Configuration.php:103:        Playwright::setHost($host);
vendor/pestphp/pest-plugin-browser/src/Browsable.php:43:    public function visit(array|string $url, array $options = []): ArrayablePendingAwaitablePage|PendingAwaitablePage
vendor/pestphp/pest-plugin-browser/src/Drivers/NullableHttpServer.php:18:     * Rewrite the given URL to match the server's host and port.
vendor/pestphp/pest-plugin-browser/src/ServerManager.php:26:     * The default host for the server.
vendor/pestphp/pest-plugin-browser/src/ServerManager.php:63:        $host = Playwright::host() ?? self::DEFAULT_HOST;
vendor/pestphp/pest-plugin-browser/src/ServerManager.php:67:            '.'.DIRECTORY_SEPARATOR.'node_modules'.DIRECTORY_SEPARATOR.'.bin'.DIRECTORY_SEPARATOR.'playwright run-server --host %s --port %d --mode launchServer',
vendor/pestphp/pest-plugin-browser/src/ServerManager.php:68:            $host,
vendor/pestphp/pest-plugin-browser/src/ServerManager.php:74:            $host,
vendor/pestphp/pest-plugin-browser/src/Drivers/LaravelHttpServer.php:57:        public readonly string $host,
vendor/pestphp/pest-plugin-browser/src/Drivers/LaravelHttpServer.php:73:     * Rewrite the given URL to match the server's host and port.
vendor/pestphp/pest-plugin-browser/src/Drivers/LaravelHttpServer.php:104:        $server->expose("{$this->host}:{$this->port}");
vendor/pestphp/pest-plugin-browser/src/Drivers/LaravelHttpServer.php:205:        return sprintf('http://%s:%d', $this->host, $this->port);
vendor/pestphp/pest-plugin-browser/src/Drivers/LaravelHttpServer.php:264:        // Set the Host header to match the configured host for subdomain routing
vendor/pestphp/pest-plugin-browser/src/Drivers/LaravelHttpServer.php:265:        $configuredHost = Playwright::host();
vendor/pestphp/pest-plugin-browser/src/Drivers/LaravelHttpServer.php:267:            $hostHeader = sprintf('%s:%d', $configuredHost, $this->port);
vendor/pestphp/pest-plugin-browser/src/Drivers/LaravelHttpServer.php:268:            $symfonyRequest->headers->set('Host', $hostHeader);
vendor/pestphp/pest-plugin-browser/src/Drivers/LaravelHttpServer.php:271:            $symfonyRequest->server->set('HTTP_HOST', $hostHeader);
vendor/pestphp/pest-plugin-browser/src/Api/Concerns/MakesUrlAssertions.php:22:        /** @var array{ scheme: string, host: string, port?: int, path?: string} $segments */
vendor/pestphp/pest-plugin-browser/src/Api/Concerns/MakesUrlAssertions.php:28:            $segments['host'],
vendor/pestphp/pest-plugin-browser/src/Api/Concerns/MakesUrlAssertions.php:71:     * Assert that the current URL host matches the given host.
vendor/pestphp/pest-plugin-browser/src/Api/Concerns/MakesUrlAssertions.php:73:    public function assertHostIs(string $host): Webpage
vendor/pestphp/pest-plugin-browser/src/Api/Concerns/MakesUrlAssertions.php:75:        $pattern = str_replace('\*', '.*', preg_quote($host, '/'));
vendor/pestphp/pest-plugin-browser/src/Api/Concerns/MakesUrlAssertions.php:79:        $message = "Actual host [{$actual}] does not equal expected host [{$pattern}].";
vendor/pestphp/pest-plugin-browser/src/Api/Concerns/MakesUrlAssertions.php:86:     * Assert that the current URL host does not match the given host.
vendor/pestphp/pest-plugin-browser/src/Api/Concerns/MakesUrlAssertions.php:88:    public function assertHostIsNot(string $host): Webpage
vendor/pestphp/pest-plugin-browser/src/Api/Concerns/MakesUrlAssertions.php:92:        $message = "Host [{$host}] should not equal the actual value.";
vendor/pestphp/pest-plugin-browser/src/Api/Concerns/MakesUrlAssertions.php:93:        expect($actual)->not->toBe($host, $message);
vendor/pestphp/pest-plugin-browser/src/Api/Concerns/MakesUrlAssertions.php:330:        /** @var array{ scheme: string, host: string, port?: int, path?: string, query?: string} */
vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php:122:     * Sets the host for the server.
vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php:124:    public function withHost(string $host): self
vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php:127:            'host' => $host,
vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php:163:        $host = $this->extractHost($options);
vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php:165:        return $this->withTemporaryHost($host, fn (): AwaitableWebpage => $this->buildAwaitablePage($options));
vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php:198:        if (! array_key_exists('host', $options)) {
vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php:202:        $host = $options['host'];
vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php:204:        unset($options['host']);
vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php:206:        return is_string($host) ? $host : null;
vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php:212:    private function withTemporaryHost(?string $host, callable $callback): AwaitableWebpage
vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php:214:        if ($host === null) {
vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php:218:        $previousHost = Playwright::host();
vendor/pestphp/pest-plugin-browser/src/Api/PendingAwaitablePage.php:219:        Playwright::setHost($host);
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/AlreadyStartedPlaywrightServer.php:20:        public string $host,
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/AlreadyStartedPlaywrightServer.php:27:     * Creates a new instance of the Playwright server with the persisted host and port.
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/AlreadyStartedPlaywrightServer.php:42:        ['host' => $host, 'port' => $port] = json_decode($path, true, 512, JSON_THROW_ON_ERROR);
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/AlreadyStartedPlaywrightServer.php:44:        assert(is_string($host) && is_numeric($port), 'Invalid Playwright server data persisted.');
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/AlreadyStartedPlaywrightServer.php:46:        return new self($host, (int) $port);
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/AlreadyStartedPlaywrightServer.php:50:     * Persists the Playwright server instance with the given host and port
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/AlreadyStartedPlaywrightServer.php:56:    public static function persist(string $host, int $port): void
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/AlreadyStartedPlaywrightServer.php:59:            'host' => $host,
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/AlreadyStartedPlaywrightServer.php:113:        return sprintf('%s:%d', $this->host, $this->port);
vendor/pestphp/pest-plugin-browser/src/Playwright/Playwright.php:58:     * The default host.
vendor/pestphp/pest-plugin-browser/src/Playwright/Playwright.php:60:    private static ?string $host = null;
vendor/pestphp/pest-plugin-browser/src/Playwright/Playwright.php:143:     * Set the default host.
vendor/pestphp/pest-plugin-browser/src/Playwright/Playwright.php:145:    public static function setHost(?string $host): void
vendor/pestphp/pest-plugin-browser/src/Playwright/Playwright.php:147:        self::$host = $host;
vendor/pestphp/pest-plugin-browser/src/Playwright/Playwright.php:151:     * Get the default host.
vendor/pestphp/pest-plugin-browser/src/Playwright/Playwright.php:153:    public static function host(): ?string
vendor/pestphp/pest-plugin-browser/src/Playwright/Playwright.php:155:        return self::$host;
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/PlaywrightNpmServer.php:37:        public readonly string $host,
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/PlaywrightNpmServer.php:47:    public static function create(string $baseDirectory, string $command, string $host, int $port, string $until): self
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/PlaywrightNpmServer.php:50:            $baseDirectory, $command, $host, $port, $until
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/PlaywrightNpmServer.php:65:            $this->host,
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/PlaywrightNpmServer.php:68:            'APP_URL' => sprintf('http://%s:%d', $this->host, $this->port),
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/PlaywrightNpmServer.php:86:            $this->host,
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/PlaywrightNpmServer.php:128:                    'host' => $this->host,
vendor/pestphp/pest-plugin-browser/src/Playwright/Servers/PlaywrightNpmServer.php:135:        return sprintf('%s:%d', $this->host, $this->port);