# Testcontainers
> Testcontainers is an Elixir library that supports ExUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
## Usage
For automatic cleanup of docker containers created in tests, for example if testcontainers fails to stop and remove the container, its suggested to register a reaper genserver in test_helper.exs like this:
test/test_helper.exs
```elixir
{:ok, _} = Testcontainers.Reaper.start_link()
ExUnit.start()
```
test/mysql_container_test.exs
```elixir
defmodule MySqlContainerTest do
use ExUnit.Case, async: true
import Testcontainers.ExUnit
alias Testcontainers.Container.MySqlContainer
describe "with default configuration" do
container(:mysql, MySqlContainer.new())
test "provides a ready-to-use mysql container", %{mysql: mysql} do
assert true
# if you want to test like below, add
# {:myxql, "~> 0.6.0", only: [:dev, :test]},
# to mix.exs and run mix deps.get
#{:ok, pid} = MyXQL.start_link(MySqlContainer.connection_parameters(mysql))
#assert %{num_rows: 1} = MyXQL.query!(pid, "SELECT 1", [])
end
end
```
## Contribution
Do you want to contribute? Find spots to improve on, fire up an issue and get the discussion going.