I am having the same issue when trying to test a FileUpload component from Filament v4.
Test:
...
$page->fill('input#form\\.name.fi-input', 'New Customer Name')
->attach("input.filepond--browser[type='file']", base_path('tests/Browser/assets/profile_picture.png'))
->assertSee('Uploading file...')
->wait(20)
->click('Save changes')
->assertSee('Saved')
->click('.fi-icon-btn.fi-no-notification-close-btn')
->assertDontSee('Saved')
->screenshot();
...
In my case Filament even throws an error about something going wrong and i get a stacktrace from livewire:
[2025-10-01 14:46:15] local.INFO: {"path":"\/livewire\/update","method":"POST","ip":"127.0.0.1","headers":{"user-agent":["Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537.36 (KHTML, like Gecko) HeadlessChrome\/140.0.7339.186 Safari\/537.36"],"referer":["http:\/\/127.0.0.1:33101\/dashboard\/740f59a9-8389-48d3-a27f-403e9cad060e\/profile?customers-edit-tab=general-information%3A%3Adata%3A%3Atab"],"origin":["http:\/\/127.0.0.1:33101"]},"user_id":"12f3b1a2-9200-4dd5-9b2c-16148fd35908","request":{"_token":"EELsbObKFairr7ibMs62CqaZ14Uh1QYulPoZaZji","components":[{"snapshot":{"data":{"data":[{"id":"740f59a9-8389-48d3-a27f-403e9cad060e","name":"New Customer Name","avatar_url":[[],{"s":"arr"}],"created_at":"2025-10-01T14:46:10.000000Z","updated_at":"2025-10-01T14:46:10.000000Z"},{"s":"arr"}],"tenant":[null,{"class":"App\\Models\\Customer","key":"740f59a9-8389-48d3-a27f-403e9cad060e","s":"mdl"}],"mountedActions":[[],{"s":"arr"}],"defaultAction":null,"defaultActionArguments":null,"defaultActionContext":null,"defaultTableAction":null,"defaultTableActionRecord":null,"defaultTableActionArguments":null,"componentFileAttachments":[[],{"s":"arr"}],"areSchemaStateUpdateHooksDisabledForTesting":false,"discoveredSchemaNames":[["form","content","headerWidgets","footerWidgets"],{"s":"arr"}]},"memo":{"id":"421OeEKbpdzflXMYwVrS","name":"app.filament.resources.customers.pages.edit-customer-profile","path":"dashboard\/740f59a9-8389-48d3-a27f-403e9cad060e\/profile","method":"GET","children":{"App\\Filament\\Resources\\Customers\\RelationManagers\\CustomerUsersRelationManager":["div","o0iHmuP0ifqxSfHQCb5J"],"App\\Filament\\Resources\\Customers\\RelationManagers\\CustomerInvitesRelationManager":["div","MtzHtxoP1XuBrEzLWG6b"],"App\\Filament\\Resources\\Customers\\RelationManagers\\CustomerProjectsRelationManager":["div","vtcHsFr55eMgpIpMIO21"]},"scripts":["183985631-2","617597185-0"],"assets":[],"errors":[],"locale":"en"},"checksum":"cbec6ea271adb6e6fed68abfa0ae50d877c653bd4dc4898dbdabb3a955d92504"},"updates":[],"calls":[{"path":"","method":"_startUpload","params":["data.avatar_url.a8931e9a-cd9c-4414-8edd-88232d2f07d4",[{"name":"profile_picture.png","size":8826,"type":"image\/png"}],false]}]}]}}
[2025-10-01 14:46:16] local.INFO: {"path":"\/livewire\/upload-file","method":"POST","ip":"127.0.0.1","headers":{"user-agent":["Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537.36 (KHTML, like Gecko) HeadlessChrome\/140.0.7339.186 Safari\/537.36"],"referer":["http:\/\/127.0.0.1:33101\/dashboard\/740f59a9-8389-48d3-a27f-403e9cad060e\/profile?customers-edit-tab=general-information%3A%3Adata%3A%3Atab"],"origin":["http:\/\/127.0.0.1:33101"]},"user_id":"12f3b1a2-9200-4dd5-9b2c-16148fd35908","request":{"expires":"1759330276","signature":"799c090a57745657ac53858eef5e841befa948daf5201e93a26cba06f7176c1e"}}
[2025-10-01 14:46:16] local.INFO: {"path":"\/livewire\/update","method":"POST","ip":"127.0.0.1","headers":{"user-agent":["Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537.36 (KHTML, like Gecko) HeadlessChrome\/140.0.7339.186 Safari\/537.36"],"referer":["http:\/\/127.0.0.1:33101\/dashboard\/740f59a9-8389-48d3-a27f-403e9cad060e\/profile?customers-edit-tab=general-information%3A%3Adata%3A%3Atab"],"origin":["http:\/\/127.0.0.1:33101"]},"user_id":"12f3b1a2-9200-4dd5-9b2c-16148fd35908","request":{"_token":"EELsbObKFairr7ibMs62CqaZ14Uh1QYulPoZaZji","components":[{"snapshot":{"data":{"data":[{"id":"740f59a9-8389-48d3-a27f-403e9cad060e","name":"New Customer Name","avatar_url":[[],{"s":"arr"}],"created_at":"2025-10-01T14:46:10.000000Z","updated_at":"2025-10-01T14:46:10.000000Z"},{"s":"arr"}],"tenant":[null,{"class":"App\\Models\\Customer","key":"740f59a9-8389-48d3-a27f-403e9cad060e","s":"mdl"}],"mountedActions":[[],{"s":"arr"}],"defaultAction":null,"defaultActionArguments":null,"defaultActionContext":null,"defaultTableAction":null,"defaultTableActionRecord":null,"defaultTableActionArguments":null,"componentFileAttachments":[[],{"s":"arr"}],"areSchemaStateUpdateHooksDisabledForTesting":false,"discoveredSchemaNames":[["form","content","headerWidgets","footerWidgets"],{"s":"arr"}]},"memo":{"id":"421OeEKbpdzflXMYwVrS","name":"app.filament.resources.customers.pages.edit-customer-profile","path":"dashboard\/740f59a9-8389-48d3-a27f-403e9cad060e\/profile","method":"GET","children":{"App\\Filament\\Resources\\Customers\\RelationManagers\\CustomerUsersRelationManager":["div","o0iHmuP0ifqxSfHQCb5J"],"App\\Filament\\Resources\\Customers\\RelationManagers\\CustomerInvitesRelationManager":["div","MtzHtxoP1XuBrEzLWG6b"],"App\\Filament\\Resources\\Customers\\RelationManagers\\CustomerProjectsRelationManager":["div","vtcHsFr55eMgpIpMIO21"]},"scripts":["183985631-2","617597185-0"],"assets":[],"errors":[],"locale":"en"},"checksum":"cbec6ea271adb6e6fed68abfa0ae50d877c653bd4dc4898dbdabb3a955d92504"},"updates":[],"calls":[{"path":"","method":"_finishUpload","params":["data.avatar_url.a8931e9a-cd9c-4414-8edd-88232d2f07d4",[],false]}]}]}}
[2025-10-01 14:46:16] local.ERROR: Undefined array key 0 {"userId":"12f3b1a2-9200-4dd5-9b2c-16148fd35908","exception":"[object] (ErrorException(code: 0): Undefined array key 0 at /var/www/html/vendor/livewire/livewire/src/Features/SupportFileUploads/WithFileUploads.php:40)
[stacktrace]
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(258): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(2, 'Undefined array...', '/var/www/html/v...', 40)
#1 /var/www/html/vendor/livewire/livewire/src/Features/SupportFileUploads/WithFileUploads.php(40): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->Illuminate\\Foundation\\Bootstrap\\{closure}(2, 'Undefined array...', '/var/www/html/v...', 40)
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Filament\\Pages\\BasePage->_finishUpload('data.avatar_url...', Array, false)
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))
#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))
#6 /var/www/html/vendor/livewire/livewire/src/Wrapped.php(23): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array)
#7 /var/www/html/vendor/livewire/livewire/src/Mechanisms/HandleComponents/HandleComponents.php(492): Livewire\\Wrapped->__call('_finishUpload', Array)
#8 /var/www/html/vendor/livewire/livewire/src/Mechanisms/HandleComponents/HandleComponents.php(101): Livewire\\Mechanisms\\HandleComponents\\HandleComponents->callMethods(Object(App\\Filament\\Resources\\Customers\\Pages\\EditCustomerProfile), Array, Object(Livewire\\Mechanisms\\HandleComponents\\ComponentContext))
#9 /var/www/html/vendor/livewire/livewire/src/LivewireManager.php(102): Livewire\\Mechanisms\\HandleComponents\\HandleComponents->update(Array, Array, Array)
#10 /var/www/html/vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php(94): Livewire\\LivewireManager->update(Array, Array, Array)
#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(46): Livewire\\Mechanisms\\HandleRequests\\HandleRequests->handleUpdate()
#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(265): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(Livewire\\Mechanisms\\HandleRequests\\HandleRequests), 'handleUpdate')
#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(211): Illuminate\\Routing\\Route->runController()
#14 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(822): Illuminate\\Routing\\Route->run()
#15 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#16 /var/www/html/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(59): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Barryvdh\\Debugbar\\Middleware\\InjectDebugbar->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(87): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#22 /var/www/html/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(48): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#24 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(120): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(63): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest(Object(Illuminate\\Http\\Request), Object(Illuminate\\Session\\Store), Object(Closure))
#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(36): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(74): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#30 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#32 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(821): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#33 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#34 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(764): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#35 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(753): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#36 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#37 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#38 /var/www/html/vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php(19): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#39 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Livewire\\Features\\SupportDisablingBackButtonCache\\DisableBackButtonCacheMiddleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#40 /var/www/html/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(59): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#41 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Barryvdh\\Debugbar\\Middleware\\InjectDebugbar->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#42 /var/www/html/app/Http/Middleware/LogHttpRequests.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#43 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\LogHttpRequests->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#44 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#45 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#46 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(47): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#47 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#48 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#49 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#50 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(109): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#51 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#52 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(61): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#53 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#54 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#55 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#56 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#57 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#58 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php(26): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#59 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\ValidatePathEncoding->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#60 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#61 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#62 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#63 /var/www/html/vendor/pestphp/pest-plugin-browser/src/Drivers/LaravelHttpServer.php(263): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#64 /var/www/html/vendor/amphp/http-server/src/RequestHandler/ClosureRequestHandler.php(21): Pest\\Browser\\Drivers\\LaravelHttpServer->handleRequest(Object(Amp\\Http\\Server\\Request))
#65 /var/www/html/vendor/amphp/http-server/src/Middleware/CompressionMiddleware.php(56): Amp\\Http\\Server\\RequestHandler\\ClosureRequestHandler->handleRequest(Object(Amp\\Http\\Server\\Request))
#66 /var/www/html/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))
#67 /var/www/html/vendor/amphp/http-server/src/Middleware/ConcurrencyLimitingMiddleware.php(40): Amp\\Http\\Server\\Middleware\\Internal\\MiddlewareRequestHandler->handleRequest(Object(Amp\\Http\\Server\\Request))
#68 /var/www/html/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))
#69 /var/www/html/vendor/amphp/http-server/src/Middleware/AllowedMethodsMiddleware.php(59): Amp\\Http\\Server\\Middleware\\Internal\\MiddlewareRequestHandler->handleRequest(Object(Amp\\Http\\Server\\Request))
#70 /var/www/html/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))
#71 /var/www/html/vendor/amphp/http-server/src/Driver/Internal/AbstractHttpDriver.php(57): Amp\\Http\\Server\\Middleware\\Internal\\MiddlewareRequestHandler->handleRequest(Object(Amp\\Http\\Server\\Request))
#72 /var/www/html/vendor/amphp/amp/src/functions.php(33): Amp\\Http\\Server\\Driver\\Internal\\AbstractHttpDriver->handleRequest(Object(Amp\\Http\\Server\\Request))
#73 /var/www/html/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(430): Amp\\{closure}(NULL, NULL, Array)
#74 /var/www/html/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(567): Revolt\\EventLoop\\Internal\\AbstractDriver->invokeMicrotasks()
#75 [internal function]: Revolt\\EventLoop\\Internal\\AbstractDriver->Revolt\\EventLoop\\Internal\\{closure}()
#76 /var/www/html/vendor/revolt/event-loop/src/EventLoop/Internal/DriverSuspension.php(64): Fiber->resume(Object(Revolt\\EventLoop\\FiberLocal))
#77 /var/www/html/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(430): Revolt\\EventLoop\\Internal\\DriverSuspension::Revolt\\EventLoop\\Internal\\{closure}()
#78 /var/www/html/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(567): Revolt\\EventLoop\\Internal\\AbstractDriver->invokeMicrotasks()
#79 [internal function]: Revolt\\EventLoop\\Internal\\AbstractDriver->Revolt\\EventLoop\\Internal\\{closure}()
#80 /var/www/html/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(503): Fiber->start()
#81 /var/www/html/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(558): Revolt\\EventLoop\\Internal\\AbstractDriver->invokeCallbacks()
#82 [internal function]: Revolt\\EventLoop\\Internal\\AbstractDriver->Revolt\\EventLoop\\Internal\\{closure}()
#83 /var/www/html/vendor/revolt/event-loop/src/EventLoop/Internal/AbstractDriver.php(96): Fiber->resume()
#84 /var/www/html/vendor/revolt/event-loop/src/EventLoop/Internal/DriverSuspension.php(117): Revolt\\EventLoop\\Internal\\AbstractDriver->Revolt\\EventLoop\\Internal\\{closure}()
#85 /var/www/html/vendor/amphp/amp/src/Future.php(251): Revolt\\EventLoop\\Internal\\DriverSuspension->suspend()
#86 /var/www/html/vendor/pestphp/pest-plugin-browser/src/Execution.php(91): Amp\\Future->await()
#87 /var/www/html/vendor/pestphp/pest-plugin-browser/src/Api/Concerns/InteractsWithTab.php(39): Pest\\Browser\\Execution->wait(20)
#88 /var/www/html/vendor/pestphp/pest-plugin-browser/src/Api/AwaitableWebpage.php(55): Pest\\Browser\\Api\\Webpage->wait(20)
#89 /var/www/html/vendor/pestphp/pest-plugin-browser/src/Playwright/Playwright.php(209): Pest\\Browser\\Api\\AwaitableWebpage->Pest\\Browser\\Api\\{closure}()
#90 /var/www/html/vendor/pestphp/pest-plugin-browser/src/Execution.php(149): Pest\\Browser\\Playwright\\Playwright::usingTimeout(1000, Object(Closure))
#91 /var/www/html/vendor/pestphp/pest-plugin-browser/src/Api/AwaitableWebpage.php(53): Pest\\Browser\\Execution->waitForExpectation(Object(Closure))
#92 /var/www/html/tests/Browser/Customer/ProfileTest.php(148): Pest\\Browser\\Api\\AwaitableWebpage->__call('wait', Array)
#93 /var/www/html/tests/Browser/Customer/ProfileTest.php(208): editCustomer(Object(P\\Tests\\Browser\\Customer\\ProfileTest))
#94 /var/www/html/vendor/pestphp/pest/src/Factories/TestCaseMethodFactory.php(168): P\\Tests\\Browser\\Customer\\ProfileTest->{closure}()
#95 [internal function]: P\\Tests\\Browser\\Customer\\ProfileTest->Pest\\Factories\\{closure}()
#96 /var/www/html/vendor/pestphp/pest/src/Concerns/Testable.php(429): call_user_func_array(Object(Closure), Array)
#97 /var/www/html/vendor/pestphp/pest/src/Support/ExceptionTrace.php(26): P\\Tests\\Browser\\Customer\\ProfileTest->Pest\\Concerns\\{closure}()
#98 /var/www/html/vendor/pestphp/pest/src/Concerns/Testable.php(429): Pest\\Support\\ExceptionTrace::ensure(Object(Closure))
#99 /var/www/html/vendor/pestphp/pest/src/Concerns/Testable.php(331): P\\Tests\\Browser\\Customer\\ProfileTest->__callClosure(Object(Closure), Array)
#100 /var/www/html/vendor/pestphp/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(71): P\\Tests\\Browser\\Customer\\ProfileTest->__runTest(Object(Closure))
#101 /var/www/html/vendor/phpunit/phpunit/src/Framework/TestCase.php(1316): P\\Tests\\Browser\\Customer\\ProfileTest->__pest_evaluable__owners__→_can_edit_customer()
#102 /var/www/html/vendor/phpunit/phpunit/src/Framework/TestCase.php(516): PHPUnit\\Framework\\TestCase->runTest()
#103 /var/www/html/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(99): PHPUnit\\Framework\\TestCase->runBare()
#104 /var/www/html/vendor/phpunit/phpunit/src/Framework/TestCase.php(357): PHPUnit\\Framework\\TestRunner->run(Object(P\\Tests\\Browser\\Customer\\ProfileTest))
#105 /var/www/html/vendor/phpunit/phpunit/src/Framework/TestSuite.php(374): PHPUnit\\Framework\\TestCase->run()
#106 /var/www/html/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\\Framework\\TestSuite->run()
#107 /var/www/html/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))
#108 /var/www/html/vendor/pestphp/pest/src/Kernel.php(103): PHPUnit\\TextUI\\Application->run(Array)
#109 /var/www/html/vendor/pestphp/pest/bin/pest(184): Pest\\Kernel->handle(Array, Array)
#110 /var/www/html/vendor/pestphp/pest/bin/pest(192): {closure}()
#111 /var/www/html/vendor/bin/pest(119): include('/var/www/html/v...')
#112 {main}
"}
[2025-10-01 14:46:16] local.INFO: {"path":"\/livewire\/update","method":"POST","ip":"127.0.0.1","headers":{"user-agent":["Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537.36 (KHTML, like Gecko) HeadlessChrome\/140.0.7339.186 Safari\/537.36"],"referer":["http:\/\/127.0.0.1:33101\/dashboard\/740f59a9-8389-48d3-a27f-403e9cad060e\/profile?customers-edit-tab=general-information%3A%3Adata%3A%3Atab"],"origin":["http:\/\/127.0.0.1:33101"]},"user_id":"12f3b1a2-9200-4dd5-9b2c-16148fd35908","request":{"_token":"EELsbObKFairr7ibMs62CqaZ14Uh1QYulPoZaZji","components":[{"snapshot":{"data":{"isFilamentNotificationsComponent":true,"notifications":[[],{"class":"Filament\\Notifications\\Collection","s":"wrbl"}]},"memo":{"id":"JwkidVNzV4Ns1EdwURlh","name":"filament.livewire.notifications","path":"dashboard\/740f59a9-8389-48d3-a27f-403e9cad060e\/profile","method":"GET","children":[],"scripts":["642100889-0"],"assets":[],"errors":[],"locale":"en"},"checksum":"fedb35ef8ded34969864caa31b676940a2c4599823bd27f56e45417b33f4b49d"},"updates":[],"calls":[{"path":"","method":"__dispatch","params":["notificationSent",{"notification":{"id":"e7f0b800-b510-4eb7-842c-36958c82e464","title":"Error while loading page","body":"There was an error while attempting to load this page. Please try again later.","status":"danger"}}]}]}]}}
Doing it directly in playwright works when using the filechooser but from what i understand pest directly attaches the file to the HTML input element (not sure about this):
let fileChooserPromise = page.waitForEvent('filechooser');
await page.getByText('Drag & Drop your files or').click();
let fileChooser = await fileChooserPromise;
await fileChooser.setFiles(path.join(__dirname, '../../assets/profile_picture.png'));
I have switched to testing the file uploads via livewire, instead of pest just to get moving, but i would love to have the possibility to do it with pest.
Livewire test:
function setAvatar(TestCase $test): void
{
$filename = 'customer_avatar.png';
$file = UploadedFile::fake()->image($filename);
Livewire::test(EditCustomerProfile::class, [
'tenant' => $test->customer,
'record' => $test->customer->id,
])
->fillForm([
'name' => $test->customer->name,
'avatar_url' => $file,
])
->call('save')
->assertHasNoFormErrors();
Storage::disk('local')->assertExists($test->customer->avatar_url);
}
I am not going to actively continue investigating the issue, just adding some context in case someone else stumbles upon this in the future.