| 
									
										
										
										
											2022-05-16 03:26:04 +00:00
										 |  |  | --- | 
					
						
							| 
									
										
										
										
											2022-06-21 12:26:53 +00:00
										 |  |  | sidebar_position: 4 | 
					
						
							| 
									
										
										
										
											2022-05-16 03:26:04 +00:00
										 |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-23 09:06:31 +00:00
										 |  |  |   </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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-16 03:26:04 +00:00
										 |  |  |   </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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-20 03:25:45 +00:00
										 |  |  |   </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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-16 03:26:04 +00:00
										 |  |  |   </TabItem> | 
					
						
							|  |  |  | </Tabs> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### Tested Environments
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <details> | 
					
						
							|  |  |  |   <summary>(click to show)</summary> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-07 10:41:00 +00:00
										 |  |  | **Browsers** | 
					
						
							| 
									
										
										
										
											2022-05-16 03:26:04 +00:00
										 |  |  |  - IE 6/7/8/9/10/11 (IE 6-9 require shims) | 
					
						
							| 
									
										
										
										
											2022-11-07 10:41:00 +00:00
										 |  |  |  - Chrome 26+ (including Android 6.0+) | 
					
						
							|  |  |  |  - Safari 8+ (Desktop) and Safari 10+ (iOS) | 
					
						
							|  |  |  |  - Edge 13-18 and 79+ | 
					
						
							|  |  |  |  - FF Latest | 
					
						
							| 
									
										
										
										
											2022-05-16 03:26:04 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-07 10:41:00 +00:00
										 |  |  | The automated browser tests seek to test the latest patch version of each major | 
					
						
							|  |  |  | release of Chromium ending in `0` (starting from Chrome 30). | 
					
						
							| 
									
										
										
										
											2022-05-16 03:26:04 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-07 10:41:00 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2022-05-16 03:26:04 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | The test suite also includes tests for various time zones.  To change | 
					
						
							| 
									
										
										
										
											2022-08-23 03:20:02 +00:00
										 |  |  | the timezone locally, set the `TZ` environment variable: | 
					
						
							| 
									
										
										
										
											2022-05-16 03:26:04 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```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. | 
					
						
							| 
									
										
										
										
											2022-11-07 10:41:00 +00:00
										 |  |  | [The "OS-Specific Setup"](/docs/miscellany/contributing#os-specific-setup) | 
					
						
							|  |  |  | includes notes for installing the required dependencies. |