> ## Documentation Index
> Fetch the complete documentation index at: https://docs.autosana.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Web Testing

> Test web apps across Chrome, Firefox, Edge, and Chromium.

Run natural language flows against any website — production, staging, local, or a preview URL.

## Supported browsers

Pick a browser per run. Default is **Chrome**.

| Browser                | What it is                                                                                                                                       |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Chrome** *(default)* | Real Google Chrome stable — proprietary codecs (H.264, AAC), Widevine DRM, official Chrome user-agent. Use this unless you have a reason not to. |
| **Firefox**            | Mozilla Firefox stable — different rendering and JS engine. Catches bugs that don't reproduce in Chromium-family browsers.                       |
| **Edge**               | Microsoft Edge stable — for Edge-specific UI and Microsoft account flows.                                                                        |
| **Chromium**           | Open-source Chromium — no proprietary codecs, no DRM, vendor-neutral.                                                                            |

## Setting the browser

<Tabs>
  <Tab title="Dashboard">
    Click **Run** on a web flow, pick the browser, hit go. Schedules ([Automations](/automations)) have the same picker. Re-running a flow keeps its original browser.
  </Tab>

  <Tab title="API">
    Pass `web_browser` in the body — see [API → Run Flows](/api-runs).

    ```bash theme={null}
    curl -X POST https://backend.autosana.ai/api/v1/flows/run \
      -H "X-API-Key: $AUTOSANA_KEY" \
      -d '{"app_id":"...", "flow_ids":["..."], "web_browser":"firefox"}'
    ```
  </Tab>

  <Tab title="MCP">
    `flows_run` and `suites_run` accept a `web_browser` parameter (`chrome` | `firefox` | `edge` | `chromium`).

    ```
    Run flow X on Firefox
    ```
  </Tab>

  <Tab title="GitHub Action">
    Add `web-browser` to the [autosana-ci](/ci-cd-integration) action:

    ```yaml theme={null}
    - uses: autosana/autosana-ci@main
      with:
        api-key: ${{ secrets.AUTOSANA_KEY }}
        platform: web
        app-id: my-web-app
        flow-ids: "uuid-1,uuid-2"
        web-browser: firefox
    ```
  </Tab>
</Tabs>

## Testing with Chrome extensions

Attach one or more Chrome extensions to a web app for an app-level default, or
select a different set in the Run dialog for one run. Passing an explicit empty
selection runs without extensions.

Extension runs use **Chromium**. Google Chrome and Microsoft Edge no longer
allow automation tools to side-load extensions. Chromium uses the same Blink
and V8 engines and supports Manifest V3 extensions in headless workers.

Autosana runs the real extension: service workers, content scripts, storage,
network interception, injected providers, and approval UI are not mocked.
Chrome side-panel approval surfaces (for example MetaMask connection requests)
are exposed to the agent as interactable browser pages.

Add extensions from **Apps → Create New App → Chrome Extension** using either:

* A Chrome Web Store URL
* A `.zip` of an unpacked Manifest V3 extension

See [Apps → Chrome Extensions](/apps#step-4-select-platform-and-upload).

### Choosing extensions for a run

* **App default:** Attach extensions from the web app card on the Apps page.
  Every new run inherits those extensions.
* **One-run override:** In the Run dialog, select a different set. This replaces
  the app default for that run.
* **No extensions:** Clear every extension in the Run dialog, or pass
  `dependencies: []` through the [Runs API](/api-runs#run-flows).

You can load multiple extensions in one browser session. If two extensions
modify the same page behavior, their normal browser interaction rules still
apply.

### Exact build history

Autosana resolves each extension to an exact build when the run starts and
stores those build IDs with the run group. Updating an extension later does not
change historical results.

The Runs page shows a puzzle badge with the extension count. Hover it to see
names and build details. Group and flow detail pages show a collapsible
**Extensions** row; expand it and hover an extension to see the exact build and
upload date used by that run.

### Troubleshooting extension runs

* Confirm the extension uses Manifest V3.
* Use a `.zip` of the unpacked extension directory, not a `.crx` file.
* Put `manifest.json` at the archive root or inside one top-level folder.
* If a flow unexpectedly uses an extension, check the web app's default
  attachments and the run's extension override.
* Chrome extension runs always use Chromium; Chrome, Edge, and Firefox cannot
  be selected for that session.
