Skip to content

Commit

Permalink
feat(config): add support for ES modules
Browse files Browse the repository at this point in the history
- Add support for ES modules via `esModule` property in file config object

* test(modules): ensure relative paths work correctly

* test(e2e): module-types

`esModule: true` is now `type: 'module'`.  Test updated to reflect that.
  • Loading branch information
sergei-startsev authored and johnjbarton committed Oct 15, 2018
1 parent 0f8b2b1 commit e811adb
Show file tree
Hide file tree
Showing 7 changed files with 77 additions and 2 deletions.
7 changes: 6 additions & 1 deletion static/context.html
Expand Up @@ -26,7 +26,12 @@
</script>
<!-- Dynamically replaced with <script> tags -->
%SCRIPTS%
<script type="text/javascript">
<!-- Since %SCRIPTS% might include modules, the `loaded()` call needs to be in a module too.
This ensures all the tests will have been declared before karma tries to run them. -->
<script type="module">
window.__karma__.loaded();
</script>
<script nomodule>
window.__karma__.loaded();
</script>
</body>
Expand Down
7 changes: 6 additions & 1 deletion static/debug.html
Expand Up @@ -28,7 +28,12 @@
</script>
<!-- Dynamically replaced with <script> tags -->
%SCRIPTS%
<script type="text/javascript">
<!-- Since %SCRIPTS% might include modules, the `loaded()` call needs to be in a module too.
This ensures all the tests will have been declared before karma tries to run them. -->
<script type="module">
window.__karma__.loaded();
</script>
<script nomodule>
window.__karma__.loaded();
</script>
</body>
Expand Down
35 changes: 35 additions & 0 deletions test/e2e/module-types.feature
@@ -0,0 +1,35 @@
Feature: ES Modules
In order to use Karma
As a person who wants to write great tests
I want to use different script types with Karma.

Scenario: Globbing modules, with both .js and .mjs extensions
Given a configuration with:
"""
files = [
{ pattern: 'modules/**/*.js', type: 'module' },
{ pattern: 'modules/**/*.mjs', type: 'module' },
];
// Chrome fails on Travis, so we must use Firefox (which means we must
// manually enable modules).
customLaunchers = {
FirefoxWithModules: {
base: 'Firefox',
prefs: {
'dom.moduleScripts.enabled': true
}
}
};
browsers = ['FirefoxWithModules'];
frameworks = ['mocha', 'chai'];
plugins = [
'karma-mocha',
'karma-chai',
'karma-firefox-launcher'
];
"""
When I start Karma
Then it passes with like:
"""
Executed 4 of 4 SUCCESS
"""
11 changes: 11 additions & 0 deletions test/e2e/support/modules/__tests__/minus.test.mjs
@@ -0,0 +1,11 @@
import { minus } from '../minus.mjs'

describe('minus', function () {
it('should pass', function () {
expect(true).to.be.true
})

it('should work', function () {
expect(minus(3, 2)).to.equal(1)
})
})
11 changes: 11 additions & 0 deletions test/e2e/support/modules/__tests__/plus.test.js
@@ -0,0 +1,11 @@
import { plus } from '../plus.js'

describe('plus', function () {
it('should pass', function () {
expect(true).to.be.true
})

it('should work', function () {
expect(plus(1, 2)).to.equal(3)
})
})
4 changes: 4 additions & 0 deletions test/e2e/support/modules/minus.mjs
@@ -0,0 +1,4 @@
// Some code under test
export function minus (a, b) {
return a - b
}
4 changes: 4 additions & 0 deletions test/e2e/support/modules/plus.js
@@ -0,0 +1,4 @@
// Some code under test
export function plus (a, b) {
return a + b
}

0 comments on commit e811adb

Please sign in to comment.