Skip to content

Commit f15befd

Browse files
committed
Build ESM -> CJS before running tests in browsers via Saucelabs
Noteworthy tweak is the fact that it seems `zuul` are eagerly loading all `require('whatever-package-or-path')` it sees before pushing the contents to Saucelabs. That was troublesome because we don't want the `esm` package to be loaded when running browser tests. But it was, even though we loaded `esm` conditionally after checking the current Node.js version used. The trick was to not use `require('esm')` but `module.require('esm')` instead, to fool the assumed look-out for `require` somewhere inside `zuul`'s code.
1 parent 3e29d67 commit f15befd

2 files changed

Lines changed: 12 additions & 6 deletions

File tree

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ language: node_js
22
node_js:
33
- 8
44
script:
5-
- npm test
5+
- npm run build
66
- "test $TRAVIS_PULL_REQUEST != 'false' || test $TRAVIS_NODE_VERSION != '8' || npm run test-browser"
77
env:
88
global:

test/helper.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
var chai = require('chai');
2-
var nodejsMajorVersion = Number(process.versions.node.split(".")[0]);
2+
var isRunningInNode = process !== undefined && process.versions.node !== undefined;
33

4-
isLegacyNodeVersion = !(nodejsMajorVersion >= 10);
4+
if (isRunningInNode) {
5+
var nodejsMajorVersion = Number(process.versions.node.split('.')[0]);
6+
isLegacyNodeVersion = !(nodejsMajorVersion >= 10);
57

6-
if (!isLegacyNodeVersion) {
7-
require = require("esm")(module);
8+
if (!isLegacyNodeVersion) {
9+
// The `zuul` package we use to run tests in browsers via Saucelabs eagerly loads all
10+
// packages it sees being used via `require()`. Because we don't want the `esm` package
11+
// to be loaded when running browser tests, we refer to `require()` via `module.require()`
12+
// because that avoid the mentioned eager loading
13+
module.require = module.require('esm')(module);
14+
}
815
}
9-
1016
assert = chai.assert;
1117
chai.should();
1218
Mustache = require('../mustache');

0 commit comments

Comments
 (0)