# Testing

Derw comes with a built-in test runner via `derw test`. The runner is based on [bach](https://github.com/eeue56/bach), a test runner written in TypeScript.

```bash
To run tests, run `derw test` from the package directory
To watch use the --watch flag
  --watch :		Watch Derw files for changes
  --function string:		A particular function name to run
  --file string:		A particular file name to run
  --only-fails :		Only log failing tests
  -h, --help :		This help text
```

## Writing a test

### Naming your file

Your file must have the extension `_test.derw` to be picked up by the test runner.

### Importing the testing functions

Testing functions are provided by the stdlib, which you can install via:

```bash
derw install --name derw-lang/stdlib --version main
```

These can then be imported like&#x20;

```elm
import "./Test" exposing ( equals, notEquals )
```

### Writing your test

A test function should be called `testNameOfTest`, and have the type `a -> void`. Test functions are automatically exported by the compiler.

```elm
testEmptySplit: a -> void
testEmptySplit =
    split "," ""
        |> equals [ "" ]

testSplit: a -> void
testSplit =
    split "," "a,b,c"
        |> equals [
        "a",
        "b",
        "c"
    ]
```

## In-browser tests

When working with html, you may find yourself needing to test a repeated set of actions in the browser - and ensuring the correct data shows up. This can be done via [html-test](https://github.com/derw-lang/html-test) package. It provides both a html element you can embed for results, and a console output. It is currently a work in progress, but if you're curious you can try it out.

![console output](/files/V6ApIYJDmM2mhleEdxut)

![web output](/files/NS04qjsVfO8xSjAGpysY)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.derw-lang.com/guides/testing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
