[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-3129":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":21,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":41,"readmeContent":42,"aiSummary":43,"trendingCount":16,"starSnapshotCount":16,"syncStatus":44,"lastSyncTime":45,"discoverSource":46},3129,"ava","avajs\u002Fava","avajs","Node.js test runner that lets you develop with confidence 🚀","",null,"JavaScript",20848,1458,217,53,0,1,12,44.49,"MIT License",false,"main",[24,25,26,5,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"assert","async","async-functions","cli","cli-app","concurrency","javascript","node","nodejs","performance","tap","tdd","test-framework","test-runner","testing","unicorns","unit-testing","2026-06-12 02:00:46","*[Please support our friend Vadim Demedes and the people in Ukraine.](https:\u002F\u002Fstand-with-ukraine.pp.ua\u002F)*\n\n---\n\n# \u003Cimg src=\"media\u002Fheader.png\" title=\"AVA\" alt=\"AVA logo\" width=\"530\">\n\nAVA is a test runner for Node.js with a concise API, detailed error output, embrace of new language features and thread isolation that lets you develop with confidence 🚀\n\nWatch this repository and follow the [Discussions](https:\u002F\u002Fgithub.com\u002Favajs\u002Fava\u002Fdiscussions) for updates.\n\nRead our [contributing guide](.github\u002FCONTRIBUTING.md) if you're looking to contribute (issues \u002F PRs \u002F etc).\n\n![](media\u002Fverbose-reporter.png)\n\n\nTranslations: [Español](https:\u002F\u002Fgithub.com\u002Favajs\u002Fava-docs\u002Fblob\u002Fmain\u002Fes_ES\u002Freadme.md), [Français](https:\u002F\u002Fgithub.com\u002Favajs\u002Fava-docs\u002Fblob\u002Fmain\u002Ffr_FR\u002Freadme.md), [Italiano](https:\u002F\u002Fgithub.com\u002Favajs\u002Fava-docs\u002Fblob\u002Fmain\u002Fit_IT\u002Freadme.md), [日本語](https:\u002F\u002Fgithub.com\u002Favajs\u002Fava-docs\u002Fblob\u002Fmain\u002Fja_JP\u002Freadme.md), [한국어](https:\u002F\u002Fgithub.com\u002Favajs\u002Fava-docs\u002Fblob\u002Fmain\u002Fko_KR\u002Freadme.md), [Português](https:\u002F\u002Fgithub.com\u002Favajs\u002Fava-docs\u002Fblob\u002Fmain\u002Fpt_BR\u002Freadme.md), [Русский](https:\u002F\u002Fgithub.com\u002Favajs\u002Fava-docs\u002Fblob\u002Fmain\u002Fru_RU\u002Freadme.md), [简体中文](https:\u002F\u002Fgithub.com\u002Favajs\u002Fava-docs\u002Fblob\u002Fmain\u002Fzh_CN\u002Freadme.md)\n\n\n## Why AVA?\n\n- Minimal and fast\n- Simple test syntax\n- Runs tests concurrently\n- Enforces writing atomic tests\n- No implicit globals\n- Includes TypeScript definitions\n- [Magic assert](#magic-assert)\n- [Isolated environment for each test file](.\u002Fdocs\u002F01-writing-tests.md#test-isolation)\n- [Promise support](.\u002Fdocs\u002F01-writing-tests.md#promise-support)\n- [Async function support](.\u002Fdocs\u002F01-writing-tests.md#async-function-support)\n- [Observable support](.\u002Fdocs\u002F01-writing-tests.md#observable-support)\n- [Enhanced assertion messages](.\u002Fdocs\u002F03-assertions.md#enhanced-assertion-messages)\n- [Automatic parallel test runs in CI](#parallel-runs-in-ci)\n- [TAP reporter](.\u002Fdocs\u002F05-command-line.md#tap-reporter)\n\n\n## Usage\n\nTo install and set up AVA, run:\n\n```console\nnpm init ava\n```\n\nYour `package.json` will then look like this (exact version notwithstanding):\n\n```json\n{\n\t\"name\": \"awesome-package\",\n\t\"type\": \"module\",\n\t\"scripts\": {\n\t\t\"test\": \"ava\"\n\t},\n\t\"devDependencies\": {\n\t\t\"ava\": \"^5.0.0\"\n\t}\n}\n```\n\nOr if you prefer using Yarn:\n\n```console\nyarn add ava --dev\n```\n\nAlternatively you can install `ava` manually:\n\n```console\nnpm install --save-dev ava\n```\n\n*Make sure to install AVA locally. AVA cannot be run globally.*\n\nDon't forget to configure the `test` script in your `package.json` as per above.\n\n### Create your test file\n\nCreate a file named `test.js` in the project root directory.\n\n_Note that AVA's documentation assumes you're using ES modules._\n\n```js\nimport test from 'ava';\n\ntest('foo', t => {\n\tt.pass();\n});\n\ntest('bar', async t => {\n\tconst bar = Promise.resolve('bar');\n\tt.is(await bar, 'bar');\n});\n```\n\n### Running your tests\n\n```console\nnpm test\n```\n\nOr with `npx`:\n\n```console\nnpx ava\n```\n\nRun with the `--watch` flag to enable AVA's [watch mode](docs\u002Frecipes\u002Fwatch-mode.md):\n\n```console\nnpx ava --watch\n```\n\n## Supported Node.js versions\n\nAVA supports the latest release of any major version that [is supported by Node.js itself](https:\u002F\u002Fgithub.com\u002Fnodejs\u002FRelease#release-schedule). Read more in our [support statement](docs\u002Fsupport-statement.md).\n\n## Highlights\n\n### Magic assert\n\nAVA adds code excerpts and clean diffs for actual and expected values. If values in the assertion are objects or arrays, only a diff is displayed, to remove the noise and focus on the problem. The diff is syntax-highlighted too! If you are comparing strings, both single and multi line, AVA displays a different kind of output, highlighting the added or missing characters.\n\n![](media\u002Fmagic-assert-combined.png)\n\n### Clean stack traces\n\nAVA automatically removes unrelated lines in stack traces, allowing you to find the source of an error much faster, as seen above.\n\n### Parallel runs in CI\n\nAVA automatically detects whether your CI environment supports parallel builds. Each build will run a subset of all test files, while still making sure all tests get executed. See the [`ci-parallel-vars`](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fci-parallel-vars) package for a list of supported CI environments.\n\n## Documentation\n\nPlease see the [files in the `docs` directory](.\u002Fdocs):\n\n* [Writing tests](.\u002Fdocs\u002F01-writing-tests.md)\n* [Execution context](.\u002Fdocs\u002F02-execution-context.md)\n* [Assertions](.\u002Fdocs\u002F03-assertions.md)\n* [Snapshot testing](.\u002Fdocs\u002F04-snapshot-testing.md)\n* [Command line (CLI)](.\u002Fdocs\u002F05-command-line.md)\n* [Configuration](.\u002Fdocs\u002F06-configuration.md)\n* [Test timeouts](.\u002Fdocs\u002F07-test-timeouts.md)\n\n### Common pitfalls\n\nWe have a growing list of [common pitfalls](docs\u002F08-common-pitfalls.md) you may experience while using AVA. If you encounter any issues you think are common, comment in [this issue](https:\u002F\u002Fgithub.com\u002Favajs\u002Fava\u002Fissues\u002F404).\n\n### Recipes\n\n- [Test setup](docs\u002Frecipes\u002Ftest-setup.md)\n- [TypeScript](docs\u002Frecipes\u002Ftypescript.md)\n- [Shared workers](docs\u002Frecipes\u002Fshared-workers.md)\n- [Watch mode](docs\u002Frecipes\u002Fwatch-mode.md)\n- [When to use `t.plan()`](docs\u002Frecipes\u002Fwhen-to-use-plan.md)\n- [Passing arguments to your test files](docs\u002Frecipes\u002Fpassing-arguments-to-your-test-files.md)\n- [Splitting tests in CI](docs\u002Frecipes\u002Fsplitting-tests-ci.md)\n- [Code coverage](docs\u002Frecipes\u002Fcode-coverage.md)\n- [Endpoint testing](docs\u002Frecipes\u002Fendpoint-testing.md)\n- [Browser testing](docs\u002Frecipes\u002Fbrowser-testing.md)\n- [Testing Vue.js components](docs\u002Frecipes\u002Fvue.md)\n- [Debugging tests with Chrome DevTools](docs\u002Frecipes\u002Fdebugging-with-chrome-devtools.md)\n- [Debugging tests with VSCode](docs\u002Frecipes\u002Fdebugging-with-vscode.md)\n- [Debugging tests with WebStorm](docs\u002Frecipes\u002Fdebugging-with-webstorm.md)\n- [Isolated MongoDB integration tests](docs\u002Frecipes\u002Fisolated-mongodb-integration-tests.md)\n- [Testing web apps using Puppeteer](docs\u002Frecipes\u002Fpuppeteer.md)\n- [Testing web apps using Selenium WebDriverJS](docs\u002Frecipes\u002Ftesting-with-selenium-webdriverjs.md)\n\n## FAQ\n\n### How is the name written and pronounced?\n\nAVA, not Ava or ava. Pronounced [`\u002Fˈeɪvə\u002F`](media\u002Fpronunciation.m4a?raw=true): Ay (f**a**ce, m**a**de) V (**v**ie, ha**v**e) A (comm**a**, **a**go)\n\n### What is the header background?\n\nIt's the [Andromeda galaxy](https:\u002F\u002Fsimple.wikipedia.org\u002Fwiki\u002FAndromeda_galaxy).\n\n### What is the difference between concurrency and parallelism?\n\n[Concurrency is not parallelism. It enables parallelism.](https:\u002F\u002Fstackoverflow.com\u002Fq\u002F1050222)\n\n## Support\n\n- [GitHub Discussions](https:\u002F\u002Fgithub.com\u002Favajs\u002Fava\u002Fdiscussions)\n\n## Related\n\n- [eslint-plugin-ava](https:\u002F\u002Fgithub.com\u002Favajs\u002Feslint-plugin-ava) — Lint rules for AVA tests\n- [@ava\u002Ftypescript](https:\u002F\u002Fgithub.com\u002Favajs\u002Ftypescript) — Test TypeScript projects\n- [@ava\u002Fcooperate](https:\u002F\u002Fgithub.com\u002Favajs\u002Fcooperate) — Low-level primitives to enable cooperation between test files\n- [@ava\u002Fget-port](https:\u002F\u002Fgithub.com\u002Favajs\u002Fget-port) — Reserve a port while testing\n\n## Links\n\n- [AVA stickers, t-shirts, etc](https:\u002F\u002Fwww.redbubble.com\u002Fpeople\u002Fsindresorhus\u002Fworks\u002F30330590-ava-logo)\n- [Awesome list](https:\u002F\u002Fgithub.com\u002Favajs\u002Fawesome-ava)\n- [Do you like AVA? Donate here!](https:\u002F\u002Fopencollective.com\u002Fava)\n- [More…](https:\u002F\u002Fgithub.com\u002Favajs\u002Fawesome-ava)\n\n## Team\n\n[![Mark Wubben](https:\u002F\u002Fgithub.com\u002Fnovemberborn.png?size=100)](https:\u002F\u002Fgithub.com\u002Fnovemberborn) | [![Sindre Sorhus](https:\u002F\u002Fgithub.com\u002Fsindresorhus.png?size=100)](https:\u002F\u002Fgithub.com\u002Fsindresorhus)\n---|---\n[Mark Wubben](https:\u002F\u002Fnovemberborn.net) | [Sindre Sorhus](https:\u002F\u002Fsindresorhus.com)\n\n###### Former\n\n- [Kevin Mårtensson](https:\u002F\u002Fgithub.com\u002Fkevva)\n- [James Talmage](https:\u002F\u002Fgithub.com\u002Fjamestalmage)\n- [Juan Soto](https:\u002F\u002Fgithub.com\u002Fsotojuan)\n- [Jeroen Engels](https:\u002F\u002Fgithub.com\u002Fjfmengels)\n- [Vadim Demedes](https:\u002F\u002Fgithub.com\u002Fvadimdemedes)\n\n\n\u003Cdiv align=\"center\">\n\t\u003Cbr>\n\t\u003Cbr>\n\t\u003Cbr>\n\t\u003Ca href=\"https:\u002F\u002Favajs.dev\">\n\t\t\u003Cimg src=\"media\u002Flogo.svg\" width=\"200\" alt=\"AVA\">\n\t\u003C\u002Fa>\n\t\u003Cbr>\n\t\u003Cbr>\n\u003C\u002Fdiv>\n","AVA 是一个用于 Node.js 的测试运行器，它提供简洁的 API、详细的错误输出以及对新语言特性的支持，帮助开发者自信地进行开发。其核心功能包括并发测试执行、原子性测试强制、无隐式全局变量、TypeScript 定义支持、魔术断言、每个测试文件的隔离环境、Promise 和异步函数的支持等。AVA 适用于需要高效、快速且可靠测试的 Node.js 项目，尤其是在处理大量测试用例或需要利用现代 JavaScript 特性的场景下表现尤为出色。",2,"2026-06-11 02:52:37","top_language"]