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

# End-to-end testing with Cypress

> Guide to running Cypress end-to-end tests for Chatwoot

# End-to-end testing with Cypress

Chatwoot uses [Cypress](https://www.cypress.io/) for end-to-end testing. Use the following steps to run the tests on your local machine.

## Prepare the Test Server

Choose any of the given methods to run your Chatwoot test server.

<Tabs>
  <Tab title="Local Installation">
    ### Using Local Chatwoot Installation

    <Note>
      You have to install the necessary dependencies as described in [setup guide](/contributing-guide/setup-guide) for this method to work.
    </Note>

    Navigate to Chatwoot codebase in your local machine and execute the following steps:

    #### Create a fresh test database

    ```bash theme={null}
    RAILS_ENV=test bin/rake db:drop
    RAILS_ENV=test bin/rake db:create
    RAILS_ENV=test bin/rake db:schema:load
    ```

    #### Start Chatwoot in the test environment

    ```bash theme={null}
    RAILS_ENV=test foreman start -f Procfile.test
    ```

    Load the URL in the browser and wait for it to start up:

    ```
    http://localhost:5050/app/login
    ```
  </Tab>

  <Tab title="Docker Setup">
    ### Using Docker

    Follow the [docker setup guide](/contributing-guide/environment-setup/docker) until you build the images.

    #### Change the Rails Environment

    Open `docker-compose.yaml` and update all the `RAILS_ENV` values from `development` to `test`:

    ```yaml theme={null}
    # In docker-compose.yaml
    environment:
      - RAILS_ENV=test  # Change from development to test
    ```

    #### Update the Port

    Under rails section in your `docker-compose.yaml` update the port value as given below:

    ```yaml theme={null}
    # In docker-compose.yaml
    ports:
      - 5050:3000  # Change from 3000:3000 to 5050:3000
    ```

    #### Reset the Database

    ```bash theme={null}
    docker-compose run --rm rails bundle exec rails db:reset
    ```

    #### Start Chatwoot Docker in the test environment

    ```bash theme={null}
    docker-compose up
    ```

    Load the URL in the browser and wait for it to start up:

    ```
    http://localhost:5050/app/login
    ```
  </Tab>
</Tabs>

## Run Cypress

Load `localhost:5050` on your browser and ensure that the Chatwoot server is running.

Navigate to your Chatwoot local directory and execute the following command to run the Cypress tests:

```bash theme={null}
pnpm cypress open --project ./spec
```

This will open the Cypress Test Runner where you can:

1. **Choose a browser** for running tests
2. **Select test files** to run individual or all tests
3. **Watch tests run** in real-time with step-by-step execution
4. **Debug failed tests** with detailed error information

## Getting Help

If you encounter issues with Cypress testing:

* **Cypress Documentation**: [Official Cypress Docs](https://docs.cypress.io/)
* **Cypress Best Practices**: [Testing Guide](https://docs.cypress.io/guides/references/best-practices)
* **Common Errors**: See [Common Errors](/contributing-guide/common-errors)
* **Community Support**: [Discord](https://discord.com/invite/cJXdrwS)

## Useful Resources

* **Cypress API Reference**: [https://docs.cypress.io/api/table-of-contents](https://docs.cypress.io/api/table-of-contents)
* **Testing Library**: [Testing utilities for better element selection](https://testing-library.com/)
* **Cypress Examples**: [Real-world examples](https://github.com/cypress-io/cypress-example-recipes)

***

Your Cypress testing environment is now ready for comprehensive end-to-end testing! 🧪
