testing

📁 meteor/meteor 📅 Feb 12, 2026
10
总安装量
10
周安装量
#29966
全站排名
安装命令
npx skills add https://github.com/meteor/meteor --skill testing

Agent 安装分布

opencode 10
gemini-cli 9
cursor 8
claude-code 7
github-copilot 7
codex 7

Skill 文档

Testing

Test patterns, commands, and utilities for the Meteor codebase.

Test Commands

# 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)
PUPPETEER_DOWNLOAD_PATH=~/.npm/chromium ./packages/test-in-console/run.sh

# Modern E2E tests (Jest + Playwright)
npm run install:modern                       # Install dependencies
npm run test:modern                          # Run all E2E tests
npm run test:modern -- -t="React"            # Run specific test

Modern E2E Tests (tools/modern-tests/)

Jest + Playwright suite for verifying modern bundler integrations (rspack). Tests cover framework skeletons and build scenarios.

Test apps: apps/{react,vue,svelte,solid,blaze,typescript,babel,coffeescript,monorepo}

Test Helpers Package (packages/test-helpers)

Comprehensive testing utilities for Meteor applications.

Async Testing

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

import { clickElement, simulateEvent, canonicalizeHtml, renderToDiv } from 'meteor/test-helpers';

clickElement(button);
simulateEvent(input, 'keydown', { keyCode: 13 });
const normalized = canonicalizeHtml(html);

Connection Testing

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.

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

# 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:

Package.onTest(function(api) {
  api.use(['tinytest', 'test-helpers', 'my-package']);
  api.addFiles('my-package-tests.js');
});

In my-package-tests.js:

import { MyPackage } from 'meteor/my-package';

Tinytest.add('MyPackage - basic functionality', function (test) {
  const result = MyPackage.doSomething();
  test.equal(result, expected);
});