
# Acoperire test262

[test262](https://github.com/tc39/test262) este suita oficială de teste de conformitate, întreținută de TC39 și metoda canonică de comparare a motoarelor JavaScript.

Phasis trece **suita completă la 100 %** în toate categoriile — semantica limbajului, biblioteca standard, `Intl`, funcționalitățile web vechi `annexB`, directorul `staging` cu teste în incubare și autotestele harness-ului. Fără ocoliri prin fanioane de funcționalități, intrări pe lista de blocare din cauza limitărilor gazdei sau excluderi per fragment.

Suita este fixată la o versiune: submodulul `test262` git fixează revizia cu care este măsurat Phasis, iar testele noi din amonte sunt luate în calcul numai după actualizarea submodulului. Instantaneul suitei complete din [`COMPAT.md`](https://github.com/inline0/phasis/blob/main/COMPAT.md) este regenerat de fluxul de lucru `compat-matrix.yml`, pornit manual, nu la fiecare push; `COMPAT.md` înregistrează data capturării instantaneului și commitul folosit.

Pentru comparație, [test262.fyi](https://test262.fyi) urmărește aceeași suită pentru fiecare motor JS de producție:

| Motor | Conformitate |
|---|---:|
| V8 (Chrome / Node) | 99.8 % |
| SpiderMonkey (Firefox) | 99.6 % |
| JavaScriptCore (Safari) | 99.4 % |
| QuickJS | ~97 % |
| Hermes (React Native) | ~95 % |
| **Phasis** | **100 %** |

Fiecare dintre aceste motoare păstrează o mică diferență reziduală (propuneri integrate recent, cazuri-limită rare încă în dezvoltare). Phasis elimină diferența deoarece este o implementare cu scop unic, axată pe conformitate.

## Rulare locală

Rularea necesită submodulul `test262` și clasele de test ale depozitului, care nu sunt incluse în pachetul Composer, așa că rulați-o dintr-o clonă:

```bash
git clone https://github.com/inline0/phasis
cd phasis
git submodule update --init test262
composer install
./bin/test262 --jobs 4
```

O rulare completă durează aproximativ 20 de minute pe un Mac recent; fragmentele matricei CI rulează în paralel și se încheie în mai puțin de zece minute.

Pentru a rula o singură categorie în timpul depanării:

```bash
./bin/test262 --category built-ins/Array
./bin/test262 --category language/expressions/yield --failures
```

Consultați [referința CLI](https://phasis.inline0.dev/ro/docs/cli#bin-test262) pentru lista completă de fanioane.

## De ce contează

JavaScript are o semantică subtilă — `NaN !== NaN`, `-0 === 0`, `[1] + 1 === "11"`, ordinea exactă a enumerării proprietăților și momentul executării microtask-urilor Promise. O bibliotecă ce rulează codul utilizatorului JS trebuie să le gestioneze corect pe toate, de fiecare dată. test262 stabilește standardul pentru „corect”; la 100 %, un program JS care rulează pe V8 produce rezultate identice la nivel de octet pe Phasis (cu excepția API-urilor disponibile doar în browser).
