diff --git a/.eslintrc.js b/.eslintrc.js index 8373e0d402e..c59d5867014 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -64,6 +64,7 @@ module.exports = { rules: { // the TypeScript compiler already takes care of this and // leaving it enabled results in false positives for interface imports + 'no-dupe-class-members': 'off', 'no-unused-vars': 'off', 'no-undef': 'off', diff --git a/.travis.yml b/.travis.yml index affaacafb3a..240a3d11ac3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -82,6 +82,12 @@ jobs: - yarn ember build -prod - yarn test + - name: Production (All Tests + Canary Features + Debug Render Tree) + env: DEBUG_RENDER_TREE=true + script: + - yarn ember build -prod + - yarn test + - name: Old Jquery and Extend Prototypes env: TEST_SUITE=old-jquery-and-extend-prototypes script: diff --git a/bin/run-tests.js b/bin/run-tests.js index c8ba2eed654..39bed475f07 100755 --- a/bin/run-tests.js +++ b/bin/run-tests.js @@ -35,6 +35,10 @@ function getBrowserRunner() { } function run(queryString) { + if (process.env.DEBUG_RENDER_TREE) { + queryString = `${queryString}&debugrendertree`; + } + let url = 'http://localhost:' + PORT + '/tests/?' + queryString; return runInBrowser(url, 3); } diff --git a/packages/@ember/-internals/environment/lib/env.ts b/packages/@ember/-internals/environment/lib/env.ts index 65463301d69..903e07ae309 100644 --- a/packages/@ember/-internals/environment/lib/env.ts +++ b/packages/@ember/-internals/environment/lib/env.ts @@ -1,4 +1,5 @@ import { FUNCTION_PROTOTYPE_EXTENSIONS } from '@ember/deprecated-features'; +import { DEBUG } from '@glimmer/env'; import global from './global'; /** @@ -98,6 +99,39 @@ export const ENV = { */ _TEMPLATE_ONLY_GLIMMER_COMPONENTS: false, + /** + Whether to perform extra bookkeeping needed to make the `captureRenderTree` + API work. + + This has to be set before the ember JavaScript code is evaluated. This is + usually done by setting `window.EmberENV = { _DEBUG_RENDER_TREE: true };` + or `window.ENV = { _DEBUG_RENDER_TREE: true };` before the "vendor" + `