---
sidebar_position: 4
hide_table_of_contents: true
---

# Testing

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

<Tabs>
  <TabItem value="nodejs" label="NodeJS">

`make test` will run the node-based tests.  By default it runs tests on files in
every supported format.  To test a specific file type, set `FMTS` to the format
you want to test.  Feature-specific tests are available with `make test_misc`

```bash
$ make test_misc   # run core tests
$ make test        # run full tests
```

To enable all errors, set the environment variable `WTF=1`:

```bash
$ make test        # run full tests
$ WTF=1 make test  # enable all error messages
```

`flow` and `eslint` checks are available:

```bash
$ make lint        # eslint checks
$ make tslint      # check TS definitions
```

  </TabItem>
  <TabItem value="browser" label="Browser">

The core in-browser tests are available at `tests/index.html` within this repo.
Start a local server and navigate to that directory to run the tests.
`make ctestserv` will start a server on port 8000.

`make ctest` will generate the browser fixtures.  To add more files, edit the
`tests/fixtures.lst` file and add the paths.

  </TabItem>
  <TabItem value="bun" label="Bun">

`make test-bun` will run the full Bun test suite and `make test-bun_misc`
will run the smaller feature-specific tests.

  </TabItem>
  <TabItem value="deno" label="Deno">

`make test-deno` will run the full Deno test suite and `make test-deno_misc`
will run the smaller feature-specific tests.

  </TabItem>
  <TabItem value="extendscript" label="Extendscript">

`make dist` will build `xlsx.extendscript.js`.

The script `estk.jsx` at the root of the project is configured to run in
ExtendScript Toolkit.  It will read `sheetjs.xlsx` and attempt to write test
files in a number of file formats.

ExtendScript Toolkit 3.5 is available as a standalone download for Windows.

  </TabItem>
</Tabs>

### Tested Environments

<details>
  <summary>(click to show)</summary>

**Browsers**
 - IE 6/7/8/9/10/11 (IE 6-9 require shims)
 - Chrome 26+ (including Android 6.0+)
 - Safari 8+ (Desktop) and Safari 10+ (iOS)
 - Edge 13-18 and 79+
 - FF Latest

The automated browser tests seek to test the latest patch version of each major
release of Chromium ending in `0` (starting from Chrome 30).

Edge originally was an independent browser, becoming a Chromium fork in version
79. Since the new releases should be nearly identical to the Chrome counterpart,
the Edge tests are run on major releases ending in `5` (starting from Edge 85).

**Server Runtimes**
 - NodeJS `0.8`, `0.10`, `0.12`, and every major version starting from `4`
 - io.js 1/2/3
 - Deno latest

The test suite also includes tests for various time zones.  To change
the timezone locally, set the `TZ` environment variable:

```bash
$ env TZ="Asia/Kolkata" WTF=1 make test_misc
```

</details>

### Test Files

Test files are housed in [another repo](https://github.com/SheetJS/test_files).

Running `make init` will refresh the `test_files` submodule and get the files.
[The "OS-Specific Setup"](/docs/miscellany/contributing#os-specific-setup)
includes notes for installing the required dependencies.