Test262: ECMAScript 测试套件 (ECMA TR/104)
Test262 是用于测试以下 Ecma 规范最新草案(或最近发布的版本)的实现一致性测试套件:
Test262 本身在 ECMA TR/104 中有描述,并包含在 ECMA-414 (pdf) 中。
Test262 的目标与现状
Test262 的目标是提供覆盖 ECMA-414 标准套件 中规定的每一种可观察行为的测试材料。Test262 的开发是一个持续的过程。截至 2025 年 5 月,Test262 包含超过 50,000 个独立测试文件,覆盖了 ECMA-414 标准套件 中定义的大多数伪代码算法和语法产生式。这些文件中的每一个都包含一个或多个不同的测试用例。这标志着迄今为止最全面的 ECMAScript 测试套件。尽管测试覆盖面很广,但 TC39 并不认为覆盖是完整的,并且与任何软件项目一样,存在遗漏和错误的可能性。本项目欢迎任何有助于使现有功能测试覆盖更加全面的对 Test262 的贡献。
ECMAScript 功能提案
如 TC39 流程 中所述,Stage 4 准入标准要求为新功能提案提供测试,以便其能够推进。测试可以由提案负责人、实现者或任何感兴趣的社区成员编写。
提案负责人 是直接参与功能提案和规范工作的人员。
实现者 是将提案实现到 JavaScript 引擎、解析器、运行时或嵌入中的人员。
社区成员 是 你,我们欢迎你做出贡献!如果你在入门时遇到困难,或者只是想问一个问题,请随时提交一个 issue。
为 Test262 做贡献
有关为 Test262 做贡献的指导,请参阅 CONTRIBUTING.md。
来自非 Ecma 成员组织的贡献者必须签署 Test262 CLA
运行 Test262
有关运行 Test262 的指导以及测试文件如何被测试运行器解释的说明,请参阅 INTERPRETING
设计理由
本项目对其许多设计决策和维护实践提供了说明——请参阅 rationale.md。
Test262 运行器
由志愿者维护的项目,可用于在各种 ECMAScript 宿主中执行 Test262:
- https://github.com/tc39/test262-harness (platform: Node.js)
- https://github.com/test262-utils/test262-harness-py (platform: Python)
- https://bakkot.github.io/test262-web-runner/ (platform: web)
- https://github.com/Izhido/test262_harness_cpp (platform: C++)
- https://github.com/lahma/test262-harness-dotnet (platform: .NET)
- https://github.com/cta-wave/WMAS/tree/latest/tools/wave/ecmascript (platform: Python; Docker Deploy Instructions)
如何阅读 CI 结果
Test262 针对每个 PR 和 commit 运行 CI 测试。唯一必须通过的测试是明确标记为 REQUIRED 的测试。归属于针对特定引擎的特定运行的 CI 测试结果,不应被除审查贡献变更集中包含的测试材料的人员之外的任何人视为有意义。这些测试几乎总是预期会失败,特别是针对新功能的测试。它们_可能_有助于确定是否发生了回归,但这只能由实际审查结果并将这些结果与测试的预期结果进行比较的人类来确定。
website/ 去哪了?
它已被移除。如果你需要访问包含在该目录中的代码,你可以在这里找到。