<a id="integration-testing"></a>

# Integration testing

* [Integration test suite](https://documentation.ubuntu.com/juju/4.0/contributor/reference/testing/integration-testing/integration-test-suite.md)
* [Test include](https://documentation.ubuntu.com/juju/4.0/contributor/reference/testing/integration-testing/test-include.md)

> See also: [Write an integration test](https://documentation.ubuntu.com/juju/4.0/contributor/howto/write-an-integration-test.md#write-an-integration-test)

Integration testing `juju` currently relies on a series of custom-made `bash` scripts. All these scripts live
in the `tests` directory. This directory includes two subdirectories, one containing
integration [test suites](https://documentation.ubuntu.com/juju/4.0/contributor/reference/testing/integration-testing/integration-test-suite.md#integration-test-suite) and the other integration [test includes](https://documentation.ubuntu.com/juju/4.0/contributor/reference/testing/integration-testing/test-include.md#test-include). Both are tools that can help you create
integration tests.

A typical integration testing package consists of:

- A `<suite name>` directory in the `tests/suites` directory.
- Inside this directory, a main script for the integration test suite, `task.sh`. This is the entrypoint to your
  integration test suite.
- In the same directory, a separate `<test name>.sh` file for every test.
- The `tests/main.sh` test script, which is the entrypoint to your integration testing.
  This file contains a `TEST_NAMES` variable which contains the names of all your integration test suites. Whenever you develop a new integration test suites, you
  need to add its name to this variable.
