mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
By my calculations, the sum of the sizes of the individual isopackets was 152MB, and the size of the combined isopacket is now just 36MB. That remarkable difference goes to show how much duplication of transitive dependencies was happening before this change. That's a savings of 116MB for the (uncompressed) size of the meteor-tool package. In Meteor 1.5.x, the meteor-tool package is about 544MB, but in Meteor 1.6 it's considerably smaller: 373MB. In other words, this change should reduce those sizes to 428MB (-21%) and 257MB (-31%), respectively.
Tools testing
Running end-to-end tests happens through the Self-Test. To run the tests:
./meteor self-test <regexp>
A very-very useful environment variable to set, in case you are running on a slow machine:
# set the multiplier for time-outs
set TIMEOUT_SCALE_FACTOR=3
Writing tests
All tests are currently stored at /tools/tests/, each JS file can register a
self-test. Example:
selftest.define("mongo failover", [/* tags */], function () {
var s = new Sandbox();
s.set('METEOR_TEST_MULTIPLE_MONGOD_REPLSET', 't');
s.createApp("failover-test", "failover-test");
s.cd("failover-test");
var run = s.run("--once", "--raw-logs");
run.waitSecs(120);
run.match("SUCCESS\n");
run.expectEnd();
run.expectExit(0);
});
The example above demonstrates how to define a test, create a Sandbox, create an app from a template and run the Meteor commands.
Templates for apps and packages are kept in /tools/tests, too.
Testing with Phantom/Browserstack
The sandbox has a testWithAllClients method that runs the clients like Phantom
or Browserstack pointed to the page of the app (localhost:3000 by default).
Tags
Tags are arbitrary. To make tags do anything, you should edit the selftest.js
code.
Examples of some tags that exist today:
slow- the test is skipped, unless the--slowflag is passedwindows- the test is not run unless on Windowsnet- the test is talking to external Internet services, thus requires an Internet connection to run
There are others.
Self-test gotchas
- The docs for self-test is reading the code of self-test
run.forbid(regexp)forbids the regexp from the entire output, not from the point it was called. It happens, because the output is matched asynchronously.