testing
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);
});