Skip to main content

testing

Use when writing tests, debugging test failures, running the test suite, or setting up test infrastructure. Covers self-test, package tests, and modern E2E tests.

Informations de source

Dépôt
meteor/meteor
Dernière activité de la source
4 septembre 2026 à 13:43
Langue détectée de SKILL.md
anglais
Étoiles
44 797
Forks
5 274

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
testing
description
Use when writing tests, debugging test failures, running the test suite, or setting up test infrastructure. Covers self-test, package tests, and modern E2E tests.
# Testing Test patterns, commands, and utilities for the Meteor codebase. ## Test Commands ```bash # CLI self-tests ./meteor self-test # Run all CLI tests ./meteor self-test "test name" # Run specific test ./meteor self-test --list # List available tests ./meteor self-test --exclude "^[a-b]" # Exclude tests by regex ./meteor self-test --retries 0 # Skip retries in development # Package tests (TinyTest — view results at http://localhost:3000) ./meteor test-packages # Test all core packages ./meteor test-packages mongo # Test specific package TINYTEST_FILTER="collection" ./meteor test-packages # Filter specific tests # Package tests in console (headless via Puppeteer — prints results to terminal) # Use this for automation or when you need terminal output without a browser. PUPPETEER_DOWNLOAD_PATH=~/.npm/chromium ./packages/test-in-console/run.sh ./packages/test-in-console/run.sh # Test all core packages ./packages/test-in-console/run.sh "mongo" # Test specific package # E2E tests (Jest + Playwright) npm run install:e2e # Install dependencies npm run test:e2e # Run all E2E tests npm run test:e2e -- -t="React" # Run specific test # Native mobile smoke tests (Maestro) npm run install:native # Install deps, verify Maestro CLI on PATH npm run test:native:android # Run Android smoke flow npm run test:native:ios # Run iOS smoke flow ``` ## E2E Tests (`tools/e2e-tests/`) Jest + Playwright suite for verifying bundler integrations (rspack). Tests cover framework skeletons, command modes, routing, top-level await, and build/watch regressions. **Test apps:** `tools/e2e-tests/apps/`. Use `dev/modern-tools/rspack/E2E_COVERAGE.md` as the authoritative app-to-feature coverage map instead of inferring coverage from fixture names. ## Native mobile smoke tests (`tools/native-tests/`) Plain Node orchestrator + Maestro YAML flows. Builds a minimal Meteor app for Cordova, installs it on an iOS Simulator or Android emulator, and checks the initial runtime plus a live hot-code-push update. Coverage includes rendering, styles, Cordova APIs and asset paths, DDP, route reloads, and HCP. Runs nightly in CI plus on PRs labeled `mobile`. **Local prerequisites:** Maestro CLI (`curl -fsSL https://get.maestro.mobile.dev | bash`), Xcode (iOS), Android SDK + emulator (Android). See `tools/native-tests/README.md` for current Node and Android SDK minimums. **Tests:** `flows/launch.yaml` and `flows/hcp-updated.yaml` against `apps/smoke/`. ## Test Helpers Package (`packages/test-helpers`) Comprehensive testing utilities for Meteor applications. ### Async Testing ```javascript import { testAsyncMulti, simplePoll, waitUntil } from 'meteor/test-helpers'; // Wait for condition await waitUntil(() => someCondition, { timeout: 5000, interval: 100 }); // Poll until ready simplePoll(() => isReady(), successCallback, failCallback); ``` ### DOM/UI Testing ```javascript import { clickElement, simulateEvent, canonicalizeHtml, renderToDiv } from 'meteor/test-helpers'; clickElement(button); simulateEvent(input, 'keydown', { keyCode: 13 }); const normalized = canonicalizeHtml(html); ``` ### Connection Testing ```javascript import { makeTestConnection, captureConnectionMessages } from 'meteor/test-helpers'; const conn = makeTestConnection(clientId); const messages = captureConnectionMessages(server); ``` ### Utilities | Function | Description | |----------|-------------| | `SeededRandom` | Predictable random for deterministic tests | | `try_all_permutations()` | Test all permutations of inputs | | `withCallbackLogger()` | Track callback invocations | | `mockBehaviours()` | Behavior mocking | ## Tinytest (`packages/tinytest`) Meteor's built-in test framework. ```javascript Tinytest.add('my test', function (test) { test.equal(1 + 1, 2); test.isTrue(true); test.throws(function () { throw new Error(); }); }); Tinytest.addAsync('async test', async function (test) { const result = await asyncOperation(); test.equal(result, expected); }); ``` ## Environment Variables | Variable | Description | |----------|-------------| | `TEST_METADATA` | Test configuration JSON | | `METEOR_TEST_PACKAGES` | Packages to test | ## Debug Commands ```bash # Verbose build output METEOR_DEBUG_BUILD=1 ./meteor run # Profile build performance METEOR_PROFILE=1 ./meteor build # Force rebuild ./meteor reset && ./meteor run # Debug Meteor tool with Chrome inspector TOOL_NODE_FLAGS="--inspect-brk" ./meteor ``` ## Writing Package Tests In `package.js`: ```javascript Package.onTest(function(api) { api.use(['tinytest', 'test-helpers', 'my-package']); api.addFiles('my-package-tests.js'); }); ``` In `my-package-tests.js`: ```javascript import { MyPackage } from 'meteor/my-package'; Tinytest.add('MyPackage - basic functionality', function (test) { const result = MyPackage.doSomething(); test.equal(result, expected); }); ```
Voir sur GitHub