## TL;DR
On a remote driver, `send_keys("/local/path/file.png")` sends the literal string to the remote machine, which does not have your file; that is why uploads silently fail on Grid or cloud providers. The fix is setting a file detector on the remote driver (`driver.file_detector = LocalFileDetector()` in Python), which zips and transfers the local file before the keys are sent. Local drivers do not need this, which is why the same test passes locally and fails remotely.

## The query
```text
selenium file detector not working for remote uploads
```

## Use this when
- File upload works locally but fails on Grid / cloud selenium
- The remote input receives a path string instead of the file
- Migrating a suite from local drivers to remote

## Not for
- Local driver file uploads
- Drag-and-drop file uploads onto drop zones
- Non-input custom upload widgets (may need JS workarounds)

## Steps
1. Confirm the driver is remote and that no file detector is set (uploads send the raw local path). Expected output: you verify the failure only happens on remote sessions.
2. Set `driver.file_detector = LocalFileDetector()` right after creating the remote driver (equivalent APIs exist in Java and other bindings). Expected output: no error; the detector is attached to the session.
3. Re-run the upload with an absolute local file path via `send_keys` on the file input. Expected output: the file transfers and the input's value shows the uploaded filename.
4. Assert the app-side result (preview, success message, or listed file). Expected output: the application confirms the upload completed.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_oLh7g5zLwba1FWAuzPUaWQ
