Skip to content
This repository has been archived by the owner on Jul 25, 2023. It is now read-only.

Latest commit

 

History

History
61 lines (39 loc) · 3.28 KB

README.md

File metadata and controls

61 lines (39 loc) · 3.28 KB

Execution Test Pack

This test pack is made up of a number of mini-typescript projects which include a test suite. As part of the test run, each project is compiled and the test suite run using Karma. So this test pack is different from the comparison test pack in that it executes the compiled code. This test pack is useful for testing expected behaviour. (It's also reassuring to see your code being executed.)

These tests are executed more widely that the comparison tests; we aim to run these against each version of TypeScript defined in our CI build matrices. (Take a look at appveyor.yml and .travis.yml for details.)

Structure

The execution test pack can be found under /test/execution-tests. Like the comparison test pack, the execution test pack uses certain conventions. All tests have their own directory under /test/execution-tests, eg /test/execution-tests/someFeature. Each test is expected to have a karma.conf.js file and a webpack.config.js file.

If a test requires a minimum version of TypeScript then the test directory should be prefixed with the minimum TypeScript version. For example, the 2.0.3_es2016 test requires a minimum TypeScript version of 2.0.3; if the installed version is lower than the test needs then the test will be skipped.

IMPORTANT

In order that the local version of ts-loader is resolved for tests a webpack.config.js file will need to include this line:

// for test harness purposes only, you would not need this in a normal project
module.exports.resolveLoader = { alias: { 'ts-loader': path.join(__dirname, "../../../index.js") } }
// note that there are 3 ../ here as compared with only 2 for the comparison tests

And likewise the karma.conf.js will need to reuse this like so:

    webpack: {
      devtool: 'inline-source-map',
      debug: true,
      module: {
          loaders: webpackConfig.module.loaders
      },
      resolve: webpackConfig.resolve,

      // for test harness purposes only, you would not need this in a normal project
      resolveLoader: webpackConfig.resolveLoader
    },

Without this, the test won't be able to resolve ts-loader and webpack won't find your TypeScript tests.

What sort of tests can be included?

It's pretty much your choice what goes in testwise. At present there are only Jasmine tests in place; it should be possible to put any test in place that Karma is compatible with. The test pack also expects a typings.json file and calls typings install in each. Be warned, type definitions are not installed until the test framework has been run. So if you're wanting to refactor a test you'll need to typings install if the requisite typings have not yet been installed. It's possible / probably that this may changed in the future; particularly to cater for situations where types should be acquired via npm etc.

Running / debugging the tests

To run all the tests use:

npm run execution-tests.

If you would like to run just a single test then:

npm run execution-tests -- --single-test nameOfTest

It's pretty handy to be able to debug tests; for that reason you can run a single test in watch mode like this:

npm run execution-tests -- --single-test nameOfTest --watch

Then you can fire up http://localhost:9876/ and the world's your oyster.