Aller au contenu
quest'n'click

ContribuerRéférencePour contributeursS'applique de 4.5.0

Quels tests tournent quand

This page in EnglishCette page sur le wiki GitHub

Chaque suite de tests du dépôt du moteur, la commande qui la lance, et quand la CI la lance : sur une pull request, sur main, dans un candidat, dans la release, chaque nuit ou chaque semaine. À lire avec La CI expliquée, qui dit ce qu'est chaque workflow et chaque job.

Les suites

« PR » est une pull request ordinaire ; « barrière » veut dire que le job ne tourne que si le plan ouvre cette barrière (La CI expliquée), et toujours sur main, sur un tag et sur une pull request étiquetée full-ci. « Release » est le workflow release sur un tag v*. Chaque commande se lance dans le dépôt du moteur.

SuiteCommandeCe qu'elle lancePRmainCandidatReleaseNightlyHebdo
Unitaire (Node)npm test (test:node)chaque tests/**/*.test.ts et les games/<GAME>/tests/ du jeu, sauf les 9 fichiers lourds et les 2 fichiers d'assetsvia la couverture ; sous Node 24 (barrière node24) ; sous Windows sans les fichiers POSIX (barrière windows)ouioui (release-check:ci)oui (release-check:ci)——
Couverturenpm run test:coveragela suite unitaire et les tests d'assets sous couverture V8, puis les seuils de vite.config.ts et le cliquetoui (job coverage ; le cliquet avertit)oui (cliquet strict)ouioui——
Assetsnpm run test:assetstests/pixel.test.ts, tests/studio-assets.test.ts (Python nécessaire)dans la couverturedans la couverturedans la couverturedans la couverture——
Solveur lourdnpm run test:heavy9 fichiers l'un après l'autre : ownership, audit, canonical, memo, reference-proof, solver-oracle, dominance, partition, checkpoint-matrix——trois fois, chacune sur un runner neuf (heavy ×3)—oui (heavy)—
Qualiténpm run qualityformatage, lint du code, knip, les deux configurations TypeScript, lint de contenuoui (check)ouiouioui——
Vérité des docsnpm run docs:truthce que disent les docs, comparé au codeoui (check)oui————
Wikinpm run wiki -- checkle manifeste, les pages, les liens, la parité, les exemples ; dans la suite unitaire sous forme de tests/wiki-*.test.tsouiouioui (suite unitaire)check --publish (docs-publish)——
Barrières du jeunpm run build:game (verify:game, le bundle, verify:dist, spoilers, audit des assets)le jeu d'exempleoui (check) ; le chapitre de référence et heroes (barrière reference) ; un nouveau jeu (barrière secondGame)ouiouioui——
Référencenpm run quality:baseline -- --check --disttémoins, preuves, sauvegardes de référence, surface publique, nombre de tests, première visiteoui (check)oui————
Preuvenpm run prove:gamela preuve exhaustive, globale et par chapitre, et solve:realityoui (check ; reference, second-game selon la barrière)ouiouioui—oui (prove)
Audit des abstractionsnpm run solve -- --audit-abstractionsle jeu d'exemple prouvé avec et sans les abstractions——oui (release-check:ci)oui——
Corpusnpm run audit:corpusles abstractions contre la recherche explicite sur des jeux aléatoires————oui (500 graines de chaque sorte, quatre morceaux)—
Matrice de preuvenpm run prove:matrixles douze instances de docs/dev/PROOF-MATRIX.md————oui (matrix)—
Banc d'essainpm run benchun jeu généré de 100 lieux, chronométré et prouvé dans un budget—————oui (prove, téléversé)
Playtestsnpm run playtestsles sessions committées rejouées et résuméesdans verify:gameoui--strict dans verify:release--strict dans verify:release—--strict (prove)
e2e, Chromiumnpm run e2e, e2e:weight, e2e:music, e2e:visual, e2e:perf, e2e:studio, e2e:a11y, e2e:pwa, e2e:tapsle build de production joué au toucher, au clavier, en français, avec Canvasbarrières e2e, reference, secondGameoui————
e2e, WebKitles mêmes scripts avec E2E_BROWSER=webkitlignes générique et clavier, le chapitre de référence, e2e:pwa (hors ligne sauté)barrières e2e, referenceoui————
e2e, Firefoxnpm run e2e:pwa, e2e:studio-hosted -- --browser=firefoxle scénario PWA ; le Studio hébergébarrières pwaFirefox, studioHostedoui————
Cross-runtimenpm run e2e:canonical, e2e:remix, e2e:speedrun, e2e:remix-speedrunles mêmes résultats sous Node, Chromium, WebKit et Firefoxoui (chaque changement)ouioui (500 graines Remix)—oui (500 graines Remix)—
Realitynpm run e2e:reality, npm run reality:xcheck -- --require-rust, les tests et le fuzz des connecteurs, le Bridge sur Postgresles signaux de bout en bout ; Biscuit en JS et en Rust ; les connecteursbarrière realityouireality:xcheck dans release-check:ciouifuzz, une minute par connecteur—
Studio hébergénpx vitest run tests/studio-server.test.ts …, npm run e2e:studio-hosted, e2e:studio-collabPostgres, S3, Keycloak ; Chromium et Firefoxbarrière studioHostedouistudio-install-smoke———
Paquetsnpm run fresh-install, npm run external-consumer, npm run upgrade-check -- --from=previousempaqueté, installé hors du dépôt, mis à jourbarrières freshInstall, upgradeouioui, sur les archives propres du candidat———
Mutationnpm run test:mutation:core -- --set=<ensemble>chaque ensemble barrière (Tests de mutation)seulement avec full-ci—ouiouioui (--fresh)—
Charges du Bridgenpm run bridge:load, npm run runs:loadSQLite et Postgres——oui (médianes)—oui—
Qualificationnpm run ops:qualifyle profil de déploiement du Bridge sous Dockerquand ops/, bridge/, scripts/pack.mjs ou les dépendances changent (qualify)mêmes cheminsoui (deployment-smoke)———
Passes de terrainnpm run field:*ce que seuls des gens et de vrais appareils peuvent vérifier——les rapports committés pour la version sont vérifiésrapportées dans les notes——

Le workflow release ne refait pas ce que le candidat a construit : ses tests sont release-check:ci et les ensembles de mutation, sur le commit du tag (Publier une release).

En local, avant une pull request

Avant une pull request donne l'ordre. En bref : npm run quality, npm run check, npm run test:assets, npm run verify:game, npm run quality:baseline -- --check ; npm run release-check:local enchaîne l'essentiel. Lancez une suite à la fois.

Trouver le test d'une chose

  • Une commande : cherchez sa clé dans tests/cmds.test.ts (chaque clé y a un exemple) et tests/core.test.ts.
  • Une règle de couche : tests/boundaries.test.ts (Frontières d'import).
  • Les noms publics : tests/api-surface.json.
  • Un comportement du navigateur : les scripts scripts/e2e*.mjs et scripts/e2e-*.ts (npm run e2e, e2e:taps, e2e:pwa, e2e:a11y…), lancés par la CI sous Chromium et WebKit (et Firefox pour la PWA et le Studio hébergé).
  • Ce que parcourt une étape du code : chaque étape de la Visite du code nomme son test.
  • Ce qui juge un mutant : TESTS dans tools/mutation-sets.ts liste, pour chaque ensemble, les fichiers de test qui le jugent (npx tsx tools/mutation-sets.ts --tests=<ensemble>).

Pour changer une commande de bout en bout, suivez La boucle de développement.