# testing

[@algorandfoundation/algokit-utils](https://dev.algorand.co/reference/algokit-utils-ts/api/readme/) / testing

## Classes

- [TestLogger](https://dev.algorand.co/reference/algokit-utils-ts/api/classes/testingtestlogger/)
- [TransactionLogger](https://dev.algorand.co/reference/algokit-utils-ts/api/classes/testingtransactionlogger/)

## Functions

### algoKitLogCaptureFixture

▸ **algoKitLogCaptureFixture**(): [`AlgoKitLogCaptureFixture`](https://dev.algorand.co/reference/algokit-utils-ts/api/interfaces/types_testingalgokitlogcapturefixture/)

Creates a test fixture for capturing AlgoKit logs.

#### Returns

[`AlgoKitLogCaptureFixture`](https://dev.algorand.co/reference/algokit-utils-ts/api/interfaces/types_testingalgokitlogcapturefixture/)

The fixture

**`Example`**

```
const logs = algoKitLogCaptureFixture();

beforeEach(logs.beforeEach);

afterEach(logs.afterEach);

test('My test', () => {

const capturedLogs = logs.testLogger.capturedLogs;

});
```

#### Defined in

[src/testing/fixtures/algokit-log-capture-fixture.ts:22](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/fixtures/algokit-log-capture-fixture.ts#L22)

* * *

### algorandFixture

▸ **algorandFixture**(`fixtureConfig?`): [`AlgorandFixture`](https://dev.algorand.co/reference/algokit-utils-ts/api/interfaces/types_testingalgorandfixture/)

Creates a test fixture for automated testing against Algorand.
By default it tests against an environment variable specified client if the standard environment variables are specified, otherwise against a default LocalNet instance, but you can pass in an algod, indexer and/or kmd (or their respective config) if you want to test against an explicitly defined network.

#### Parameters

| Name | Type | Description |
| :-- | :-- | :-- |
| `fixtureConfig?` | [`AlgorandFixtureConfig`](https://dev.algorand.co/reference/algokit-utils-ts/api/interfaces/types_testingalgorandfixtureconfig/) | The fixture configuration |

#### Returns

[`AlgorandFixture`](https://dev.algorand.co/reference/algokit-utils-ts/api/interfaces/types_testingalgorandfixture/)

The fixture

**`Example`**

```
const fixture = algorandFixture()

beforeEach(fixture.newScope, 10_000)

test('My test', async () => {

const {algod, indexer, testAccount, ...} = fixture.context

// test things...

})
```

**`Example`**

```
const fixture = algorandFixture()

beforeAll(fixture.newScope, 10_000)

test('My test', async () => {

const {algod, indexer, testAccount, ...} = fixture.context

// test things...

})
```

#### Defined in

[src/testing/fixtures/algorand-fixture.ts:60](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/fixtures/algorand-fixture.ts#L60)

* * *

### getTestAccount

▸ **getTestAccount**(`params`, `algod`, `kmd?`): `Promise`<`Address` & `Account` & [`TransactionSignerAccount`](https://dev.algorand.co/reference/algokit-utils-ts/api/interfaces/types_accounttransactionsigneraccount/) >

#### Parameters

| Name | Type | Description |
| :-- | :-- | :-- |
| `params` | [`GetTestAccountParams`](https://dev.algorand.co/reference/algokit-utils-ts/api/interfaces/types_testinggettestaccountparams/) | The config for the test account to generate |
| `algod` | `AlgodClient` | An algod client |
| `kmd?` | `KmdClient` | A KMD client, if not specified then a default KMD client will be loaded from environment variables and if not found fallback to the default LocalNet KMD client |

#### Returns

`Promise`<`Address` & `Account` & [`TransactionSignerAccount`](https://dev.algorand.co/reference/algokit-utils-ts/api/interfaces/types_accounttransactionsigneraccount/) >

The account, with private key loaded

#### Defined in

[src/testing/account.ts:21](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/account.ts#L21)

* * *

### runWhenIndexerCaughtUp

▸ **runWhenIndexerCaughtUp** <`T`>(`run`): `Promise`<`T`>

Runs the given indexer call until a 404 error is no longer returned.
Tried every 200ms up to 100 times.
Very rudimentary implementation designed for automated testing.

#### Parameters

| Name | Type | Description |
| :-- | :-- | :-- |
| `run` | () => `Promise`<`T`> | The code to run |

#### Returns

`Promise`<`T`>

The result (as a promise), or throws if the indexer didn’t catch up in time

**`Example`**

```
const transaction = await runWhenIndexerCaughtUp(() => indexer.lookupTransactionByID(txnId).do());
```

#### Defined in

[src/testing/indexer.ts:12](https://github.com/algorandfoundation/algokit-utils-ts/blob/main/src/testing/indexer.ts#L12)
