diff --git a/index.js b/index.js index 204fc0e2..2b4f9286 100644 --- a/index.js +++ b/index.js @@ -27,41 +27,44 @@ module.exports = { } }, - setupPreprocessorRegistry(type, registry) { - if (type === 'parent') { - this._assignOptions(this.app); - - let pluginFnName = this._stripTestSelectors ? '_buildStripPlugin' : '_buildHashParamPlugin'; - - let plugin = this[pluginFnName](); - plugin.parallelBabel = { - requireFile: __filename, - buildUsing: pluginFnName, - params: {}, - }; + _setupPreprocessorRegistry(registry) { + let pluginFnName = this._stripTestSelectors ? '_buildStripPlugin' : '_buildHashParamPlugin'; + + let plugin = this[pluginFnName](); + plugin.parallelBabel = { + requireFile: __filename, + buildUsing: pluginFnName, + params: {}, + }; - registry.add('htmlbars-ast-plugin', plugin); - } + registry.add('htmlbars-ast-plugin', plugin); }, - included(app) { + included(appOrParent) { this._super.included.apply(this, arguments); + let host = this._findHost(); + this._assignOptions(host); + + // we can't use the setupPreprocessorRegistry() hook as it is called too + // early and we do not have reliable access to `app.tests` there yet + this._setupPreprocessorRegistry(appOrParent.registry); + // add the StripDataTestPropertiesPlugin to the list of plugins used by // the `ember-cli-babel` addon if (this._stripTestSelectors && !this._registeredWithBabel) { let checker = new VersionChecker(this.parent).for('ember-cli-babel', 'npm'); - app.options = app.options || {}; + appOrParent.options = appOrParent.options || {}; if (checker.satisfies('^5.0.0')) { - app.options.babel = app.options.babel || {}; - app.options.babel.plugins = app.options.babel.plugins || []; - app.options.babel.plugins.push(require('./strip-data-test-properties-plugin')); + appOrParent.options.babel = appOrParent.options.babel || {}; + appOrParent.options.babel.plugins = appOrParent.options.babel.plugins || []; + appOrParent.options.babel.plugins.push(require('./strip-data-test-properties-plugin')); } else if (checker.satisfies('^6.0.0-beta.1') || checker.satisfies('^7.0.0')) { - app.options.babel6 = app.options.babel6 || {}; - app.options.babel6.plugins = app.options.babel6.plugins || []; - app.options.babel6.plugins.push(require.resolve('./strip-data-test-properties-plugin6')); + appOrParent.options.babel6 = appOrParent.options.babel6 || {}; + appOrParent.options.babel6.plugins = appOrParent.options.babel6.plugins || []; + appOrParent.options.babel6.plugins.push(require.resolve('./strip-data-test-properties-plugin6')); } else { this.ui.writeWarnLine('ember-test-selectors: You are using an unsupported ember-cli-babel version. data-test ' + 'properties are not automatically stripped from your JS code.'); @@ -71,7 +74,7 @@ module.exports = { } if (!this._stripTestSelectors) { - this.app.import('vendor/ember-test-selectors/patch-component.js'); + host.import('vendor/ember-test-selectors/patch-component.js'); } },