Giter Club home page Giter Club logo

test262.fyi's Introduction

test262.fyi

Independent daily test262 (standard test suite) runner for many JS engines (test262.report spiritual successor). WIP.

Engines

Transpilers

  • Babel (old Node and Babel + core-js)
  • SWC (old Node and SWC + core-js)
  • Sucrase (old Node and SWC + core-js)

Engine variants

  • V8 with experimental opts (--harmony etc)
  • SM with experimental opts
  • Stable versions of engines

Features to do

  • Preview test262 PRs (changes only)
  • Data/graph over time
  • Diff individual engines(/runs)
  • Lookup JS runtime version -> JS engine version (Node, Deno, Bun, etc)
  • Measure times for each test, have "result view" and "time view"

Local build

Note: You need a GitHub API token (PAT) in your env as GITHUB_TOKEN

  1. Clone repo
  2. Run scripts/downloadOldResults.mjs and scripts/extractResults.sh (downloads results from latest build)
  3. node site/generate.mjs (might take a minute or two)
  4. Start a HTTP server in site and open it in your browser

test262.fyi's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

test262.fyi's Issues

Nashorn and Rhino missing from results

Curiously nashorn does not appear in the URL when selecting all engines:

https://test262.fyi/#|v8,v8_exp,sm,sm_exp,jsc,hermes,qjs,libjs,libjs_bc,chakra,graaljs,xs,rhino,boa,engine262,babel

rhino does but is not visible as a checkable entry. Neither seem to be included in the results anywhere

Result history

You already know what this is about, just making a tracking issue :)

The way LibJS does it is just appending to an ever growing JSON file, which in hindsight is not really that scalable - especially not when you have results for 10 different engines.

This could either be tracking the total score, or even per-file results to see when certain engines implemented certain features.

Add QuickJS-NG

Hey there! What would it take to add QuickJS-NG to the mix?

We've made significant improvements over the OG to make it close to ES2023 in features.

Button/modifier key to quickly unselect all but one engines

A common use case is seeing what the results of one specific engine are, which currently requires manually unselecting all other engines. There should either be a button to unselect all, or something like Alt+click unselecting all but the clicked checkbox.

Improved Hermes ES6 score

Hermes has two experimental options that can potentially improve the results: --block-scoping and -Xes6-class. How difficult would it be to pass them?

FWIW, it looks not exactly trivial. I think hermes is invoked from https://github.com/CanadaHonk/test262.fyi/blob/78cb8ddcf97cb42c3c40117d35bc6d484caf0437/.github/workflows/run.yml and I don't see an obvious way to pass special arguments there (but I know nothing about Git workflows). Perhaps an easier alternative would be to create a wrapper shell-script and invoke that?

Rename "Import Attributes" with "Import Assertions"

All implementations of the Import Attributes proposal use an older syntax, from when the proposal was called Import Assertions, and do not support the new syntax yet. It would be good to use the old name on the website, to avoid confusion.

Hermes warning potentially treated as errors

It seems that at least in some cases, warnings produced by hermes are being treated as errors by the test runner, causing it to assume that a test has failed when it has actually passed. For example this one: https://github.com/tc39/test262/blob/46fc2814306c75f671924c6830346bf76b3ac30b/test/language/line-terminators/S7.3_A5.4.js

When executed with Hermes, it produces two warnings but otherwise completes successfully.

$ hermes t.js
t.js:11:1: warning: Direct call to eval(), but lexical scope is not supported.
eval("/*\u2029 multi line \u2029 comment \u2029*/");
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
t.js:15:1: warning: Direct call to eval(), but lexical scope is not supported.
eval("/*\u2029 multi line \u2029 comment \u2029 x = 1;*/");
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

How difficult would it be to pass -w (to suppress all warnings) to the hermes CLI?

Babel tests

We run test262 on Babel and core-js regularly, and it would be very nice to show the results on https://test262.fyi.

I just noticed that our test262 runner on CI is completely broken and it's not reporting results, but for the purpose of this issue let's assume that it works, while I fix it ๐Ÿ˜…

We run test262 on every commit, and store the result in a test262-result artifact -- you can find the last one https://github.com/babel/babel/actions/runs/5179541745.

We run tests by compiling them to ES5 using Babel, injecting the core-js polyfill, and running the resulting code in a very old version of Node.js (0.10) which only supported ES5. This means that our test results aren't significant for pre-ES6 behavior, but they are useful for features introduced since then.

We use https://github.com/babel/babel-test262-runner/ to run them, which produces tap output. The readme doesn't mention it, but it's possible to specify the path to a different test262 checkout using the TEST262_PATH=.... env variable.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.