diff --git a/test/fixtures/with-telemetry/input/.editorconfig b/test/fixtures/with-telemetry/input/.editorconfig
index 219985c22..c35a00240 100644
--- a/test/fixtures/with-telemetry/input/.editorconfig
+++ b/test/fixtures/with-telemetry/input/.editorconfig
@@ -4,7 +4,6 @@
root = true
-
[*]
end_of_line = lf
charset = utf-8
diff --git a/test/fixtures/with-telemetry/input/.eslintignore b/test/fixtures/with-telemetry/input/.eslintignore
index d9807d3ab..6e72a05f9 100644
--- a/test/fixtures/with-telemetry/input/.eslintignore
+++ b/test/fixtures/with-telemetry/input/.eslintignore
@@ -11,6 +11,9 @@
# misc
/coverage/
+!.*
+.*/
+.eslintcache
# ember-try
/.node_modules.ember-try/
diff --git a/test/fixtures/with-telemetry/input/.eslintrc.js b/test/fixtures/with-telemetry/input/.eslintrc.js
index a522eb93a..41a1a43d8 100644
--- a/test/fixtures/with-telemetry/input/.eslintrc.js
+++ b/test/fixtures/with-telemetry/input/.eslintrc.js
@@ -1,39 +1,58 @@
+'use strict';
+
module.exports = {
root: true,
+ parser: 'babel-eslint',
parserOptions: {
- ecmaVersion: 2017,
- sourceType: 'module'
+ ecmaVersion: 2018,
+ sourceType: 'module',
+ ecmaFeatures: {
+ legacyDecorators: true,
+ },
},
- plugins: [
- 'ember'
- ],
+ plugins: ['ember'],
extends: [
'eslint:recommended',
- 'plugin:ember/recommended'
+ 'plugin:ember/recommended',
+ 'plugin:prettier/recommended',
],
env: {
- browser: true
- },
- rules: {
+ browser: true,
},
+ rules: {},
overrides: [
// node files
{
files: [
- 'ember-cli-build.js',
- 'testem.js',
- 'blueprints/*/index.js',
- 'config/**/*.js',
- 'lib/*/index.js'
+ './.eslintrc.js',
+ './.prettierrc.js',
+ './.template-lintrc.js',
+ './ember-cli-build.js',
+ './testem.js',
+ './blueprints/*/index.js',
+ './config/**/*.js',
+ './lib/*/index.js',
+ './server/**/*.js',
],
parserOptions: {
sourceType: 'script',
- ecmaVersion: 2015
},
env: {
browser: false,
- node: true
- }
- }
- ]
+ node: true,
+ },
+ plugins: ['node'],
+ extends: ['plugin:node/recommended'],
+ rules: {
+ // this can be removed once the following is fixed
+ // https://github.com/mysticatea/eslint-plugin-node/issues/77
+ 'node/no-unpublished-require': 'off',
+ },
+ },
+ {
+ // Test files:
+ files: ['tests/**/*-test.{js,ts}'],
+ extends: ['plugin:qunit/recommended'],
+ },
+ ],
};
diff --git a/test/fixtures/with-telemetry/input/.gitignore b/test/fixtures/with-telemetry/input/.gitignore
index 29c9bc65a..81fbed4cd 100644
--- a/test/fixtures/with-telemetry/input/.gitignore
+++ b/test/fixtures/with-telemetry/input/.gitignore
@@ -10,6 +10,7 @@
# misc
/.sass-cache
+/.eslintcache
/connect.lock
/coverage/
/libpeerconnection.log
diff --git a/test/fixtures/with-telemetry/input/.prettierignore b/test/fixtures/with-telemetry/input/.prettierignore
new file mode 100644
index 000000000..922165552
--- /dev/null
+++ b/test/fixtures/with-telemetry/input/.prettierignore
@@ -0,0 +1,21 @@
+# unconventional js
+/blueprints/*/files/
+/vendor/
+
+# compiled output
+/dist/
+/tmp/
+
+# dependencies
+/bower_components/
+/node_modules/
+
+# misc
+/coverage/
+!.*
+.eslintcache
+
+# ember-try
+/.node_modules.ember-try/
+/bower.json.ember-try
+/package.json.ember-try
diff --git a/test/fixtures/with-telemetry/input/.prettierrc.js b/test/fixtures/with-telemetry/input/.prettierrc.js
new file mode 100644
index 000000000..534e6d35a
--- /dev/null
+++ b/test/fixtures/with-telemetry/input/.prettierrc.js
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = {
+ singleQuote: true,
+};
diff --git a/test/fixtures/with-telemetry/input/.template-lintrc.js b/test/fixtures/with-telemetry/input/.template-lintrc.js
new file mode 100644
index 000000000..f35f61c7b
--- /dev/null
+++ b/test/fixtures/with-telemetry/input/.template-lintrc.js
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = {
+ extends: 'recommended',
+};
diff --git a/test/fixtures/with-telemetry/input/.travis.yml b/test/fixtures/with-telemetry/input/.travis.yml
index 54dcdb2ab..91f46e724 100644
--- a/test/fixtures/with-telemetry/input/.travis.yml
+++ b/test/fixtures/with-telemetry/input/.travis.yml
@@ -1,10 +1,9 @@
---
language: node_js
node_js:
- - "6"
+ - "12"
-sudo: false
-dist: trusty
+dist: xenial
addons:
chrome: stable
@@ -18,9 +17,13 @@ env:
# See https://git.io/vdao3 for details.
- JOBS=1
+branches:
+ only:
+ - master
+
before_install:
- - npm config set spin false
+ - curl -o- -L https://yarnpkg.com/install.sh | bash
+ - export PATH=$HOME/.yarn/bin:$PATH
script:
- - npm run lint:js
- - npm test
+ - yarn test
diff --git a/test/fixtures/with-telemetry/input/README.md b/test/fixtures/with-telemetry/input/README.md
index 01e693bdc..37c81d3ac 100644
--- a/test/fixtures/with-telemetry/input/README.md
+++ b/test/fixtures/with-telemetry/input/README.md
@@ -35,8 +35,8 @@ Make use of the many generators for code, try `ember help generate` for more det
### Linting
-* `npm run lint:js`
-* `npm run lint:js -- --fix`
+* `yarn lint`
+* `yarn lint:fix`
### Building
diff --git a/test/fixtures/with-telemetry/input/app/app.js b/test/fixtures/with-telemetry/input/app/app.js
index b3b2bd677..dcf416e18 100644
--- a/test/fixtures/with-telemetry/input/app/app.js
+++ b/test/fixtures/with-telemetry/input/app/app.js
@@ -1,14 +1,12 @@
import Application from '@ember/application';
-import Resolver from './resolver';
+import Resolver from 'ember-resolver';
import loadInitializers from 'ember-load-initializers';
-import config from './config/environment';
+import config from 'app/config/environment';
-const App = Application.extend({
- modulePrefix: config.modulePrefix,
- podModulePrefix: config.podModulePrefix,
- Resolver
-});
+export default class App extends Application {
+ modulePrefix = config.modulePrefix;
+ podModulePrefix = config.podModulePrefix;
+ Resolver = Resolver;
+}
loadInitializers(App, config.modulePrefix);
-
-export default App;
diff --git a/test/fixtures/with-telemetry/input/app/controllers/application.js b/test/fixtures/with-telemetry/input/app/controllers/application.js
new file mode 100644
index 000000000..5bb0982f8
--- /dev/null
+++ b/test/fixtures/with-telemetry/input/app/controllers/application.js
@@ -0,0 +1,5 @@
+import Controller from '@ember/controller';
+
+export default class ApplicationController extends Controller {
+ addModal() {}
+}
diff --git a/test/fixtures/with-telemetry/input/app/resolver.js b/test/fixtures/with-telemetry/input/app/resolver.js
deleted file mode 100644
index 2fb563d6c..000000000
--- a/test/fixtures/with-telemetry/input/app/resolver.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import Resolver from 'ember-resolver';
-
-export default Resolver;
diff --git a/test/fixtures/with-telemetry/input/app/router.js b/test/fixtures/with-telemetry/input/app/router.js
index d0bb00952..7458feb73 100644
--- a/test/fixtures/with-telemetry/input/app/router.js
+++ b/test/fixtures/with-telemetry/input/app/router.js
@@ -1,12 +1,9 @@
import EmberRouter from '@ember/routing/router';
-import config from './config/environment';
+import config from 'app/config/environment';
-const Router = EmberRouter.extend({
- location: config.locationType,
- rootURL: config.rootURL
-});
+export default class Router extends EmberRouter {
+ location = config.locationType;
+ rootURL = config.rootURL;
+}
-Router.map(function() {
-});
-
-export default Router;
+Router.map(function () {});
diff --git a/test/fixtures/with-telemetry/input/app/templates/application.hbs b/test/fixtures/with-telemetry/input/app/templates/application.hbs
index b1a4f1224..f665128ad 100644
--- a/test/fixtures/with-telemetry/input/app/templates/application.hbs
+++ b/test/fixtures/with-telemetry/input/app/templates/application.hbs
@@ -28,7 +28,7 @@
{{/if}}
{{outlet}}
- {{#bs-button id="openModal" onClick=(action "addModal")}}Open{{/bs-button}}
+ {{#bs-button id="openModal" onClick=(action this.addModal)}}Open{{/bs-button}}
{{#if hasModal}}
{{#bs-modal-simple open=modal onHidden=(action "removeModal") title="Dynamic Dialog"}}
diff --git a/test/fixtures/with-telemetry/input/app/templates/components/.gitkeep b/test/fixtures/with-telemetry/input/app/templates/components/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/test/fixtures/with-telemetry/input/app/templates/components/file-less.hbs b/test/fixtures/with-telemetry/input/app/templates/components/file-less.hbs
index 65a8f749d..47ae702e9 100644
--- a/test/fixtures/with-telemetry/input/app/templates/components/file-less.hbs
+++ b/test/fixtures/with-telemetry/input/app/templates/components/file-less.hbs
@@ -1,2 +1,2 @@
this template has no js
-Primary
+{{#bs-button type="primary"}}>Primary{{/bs-button}}
diff --git a/test/fixtures/with-telemetry/input/config/ember-cli-update.json b/test/fixtures/with-telemetry/input/config/ember-cli-update.json
new file mode 100644
index 000000000..c4895e632
--- /dev/null
+++ b/test/fixtures/with-telemetry/input/config/ember-cli-update.json
@@ -0,0 +1,20 @@
+{
+ "schemaVersion": "1.0.0",
+ "packages": [
+ {
+ "name": "ember-cli",
+ "version": "3.28.6",
+ "blueprints": [
+ {
+ "name": "app",
+ "outputRepo": "https://github.com/ember-cli/ember-new-output",
+ "codemodsSource": "ember-app-codemods-manifest@1",
+ "isBaseBlueprint": true,
+ "options": [
+ "--yarn"
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/test/fixtures/with-telemetry/input/config/environment.js b/test/fixtures/with-telemetry/input/config/environment.js
index 5fa181e61..439371d32 100644
--- a/test/fixtures/with-telemetry/input/config/environment.js
+++ b/test/fixtures/with-telemetry/input/config/environment.js
@@ -1,6 +1,6 @@
'use strict';
-module.exports = function(environment) {
+module.exports = function (environment) {
let ENV = {
modulePrefix: 'app',
environment,
@@ -13,14 +13,14 @@ module.exports = function(environment) {
},
EXTEND_PROTOTYPES: {
// Prevent Ember Data from overriding Date.parse.
- Date: false
- }
+ Date: false,
+ },
},
APP: {
// Here you can pass flags/options to your application instance
// when it is created
- }
+ },
};
if (environment === 'development') {
diff --git a/test/fixtures/with-telemetry/input/config/optional-features.json b/test/fixtures/with-telemetry/input/config/optional-features.json
index 21f1dc719..b26286e2e 100644
--- a/test/fixtures/with-telemetry/input/config/optional-features.json
+++ b/test/fixtures/with-telemetry/input/config/optional-features.json
@@ -1,3 +1,6 @@
{
- "jquery-integration": true
+ "application-template-wrapper": false,
+ "default-async-observers": true,
+ "jquery-integration": false,
+ "template-only-glimmer-components": true
}
diff --git a/test/fixtures/with-telemetry/input/config/targets.js b/test/fixtures/with-telemetry/input/config/targets.js
index 8ffae3636..3cd797ab4 100644
--- a/test/fixtures/with-telemetry/input/config/targets.js
+++ b/test/fixtures/with-telemetry/input/config/targets.js
@@ -3,16 +3,24 @@
const browsers = [
'last 1 Chrome versions',
'last 1 Firefox versions',
- 'last 1 Safari versions'
+ 'last 1 Safari versions',
];
-const isCI = !!process.env.CI;
-const isProduction = process.env.EMBER_ENV === 'production';
-
-if (isCI || isProduction) {
- browsers.push('ie 11');
-}
+// Ember's browser support policy is changing, and IE11 support will end in
+// v4.0 onwards.
+//
+// See https://deprecations.emberjs.com/v3.x#toc_3-0-browser-support-policy
+//
+// If you need IE11 support on a version of Ember that still offers support
+// for it, uncomment the code block below.
+//
+// const isCI = Boolean(process.env.CI);
+// const isProduction = process.env.EMBER_ENV === 'production';
+//
+// if (isCI || isProduction) {
+// browsers.push('ie 11');
+// }
module.exports = {
- browsers
+ browsers,
};
diff --git a/test/fixtures/with-telemetry/input/ember-cli-build.js b/test/fixtures/with-telemetry/input/ember-cli-build.js
index 1402bb2e5..d3bbd686b 100644
--- a/test/fixtures/with-telemetry/input/ember-cli-build.js
+++ b/test/fixtures/with-telemetry/input/ember-cli-build.js
@@ -2,7 +2,7 @@
const EmberApp = require('ember-cli/lib/broccoli/ember-app');
-module.exports = function(defaults) {
+module.exports = function (defaults) {
let app = new EmberApp(defaults, {
'ember-bootstrap': {
'bootstrapVersion': 4,
diff --git a/test/fixtures/with-telemetry/input/package.json b/test/fixtures/with-telemetry/input/package.json
index 335bdc211..fa38ae1c4 100644
--- a/test/fixtures/with-telemetry/input/package.json
+++ b/test/fixtures/with-telemetry/input/package.json
@@ -11,44 +11,62 @@
},
"repository": "",
"scripts": {
- "build": "ember build",
- "lint:js": "eslint .",
+ "build": "ember build --environment=production",
+ "lint": "npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"",
+ "lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix",
+ "lint:hbs:fix": "ember-template-lint . --fix",
+ "lint:js": "eslint . --cache",
+ "lint:js:fix": "eslint . --fix",
"start": "ember serve",
- "test": "ember test"
+ "test": "npm-run-all lint test:*",
+ "test:ember": "ember test"
},
"devDependencies": {
- "@ember/jquery": "^0.6.0",
- "@ember/optional-features": "^0.7.0",
+ "@ember/optional-features": "^2.0.0",
+ "@ember/test-helpers": "^2.6.0",
+ "@glimmer/component": "^1.0.4",
+ "@glimmer/tracking": "^1.0.4",
+ "babel-eslint": "^10.1.0",
"bootstrap": "^4.3.1",
"broccoli-asset-rev": "^3.0.0",
- "ember-ajax": "^5.0.0",
- "ember-bootstrap": "^2.8.1",
- "ember-cli": "~3.10.1",
- "ember-cli-app-version": "^3.2.0",
- "ember-cli-babel": "^7.7.3",
- "ember-cli-dependency-checker": "^3.1.0",
- "ember-cli-eslint": "^5.1.0",
- "ember-cli-htmlbars": "^3.0.1",
- "ember-cli-htmlbars-inline-precompile": "^2.1.0",
- "ember-cli-inject-live-reload": "^1.8.2",
+ "ember-auto-import": "^1.12.0",
+ "ember-bootstrap": "^4.0.0",
+ "ember-cli": "~3.28.6",
+ "ember-cli-app-version": "^5.0.0",
+ "ember-cli-babel": "^7.26.10",
+ "ember-cli-dependency-checker": "^3.2.0",
+ "ember-cli-htmlbars": "^5.7.2",
+ "ember-cli-inject-live-reload": "^2.1.0",
"ember-cli-sri": "^2.1.1",
"ember-cli-string-helpers": "^4.0.5",
- "ember-cli-template-lint": "^1.0.0-beta.1",
- "ember-cli-uglify": "^2.1.0",
- "ember-data": "~3.10.0",
- "ember-export-application-global": "^2.0.0",
- "ember-load-initializers": "^2.0.0",
+ "ember-cli-terser": "^4.0.2",
+ "ember-data": "~3.28.6",
+ "ember-export-application-global": "^2.0.1",
+ "ember-fetch": "^8.1.1",
+ "ember-load-initializers": "^2.1.2",
"ember-maybe-import-regenerator": "^0.1.6",
- "ember-qunit": "^4.4.1",
- "ember-resolver": "^5.0.1",
- "ember-source": "~3.10.0",
- "ember-welcome-page": "^4.0.0",
- "eslint-plugin-ember": "^6.2.0",
- "eslint-plugin-node": "^9.0.1",
+ "ember-page-title": "^6.2.2",
+ "ember-qunit": "^5.1.5",
+ "ember-resolver": "^8.0.3",
+ "ember-source": "~3.28.8",
+ "ember-template-lint": "^3.15.0",
+ "ember-welcome-page": "^4.1.0",
+ "eslint": "^7.32.0",
+ "eslint-config-prettier": "^8.3.0",
+ "eslint-plugin-ember": "^10.5.8",
+ "eslint-plugin-node": "^11.1.0",
+ "eslint-plugin-prettier": "^3.4.1",
+ "eslint-plugin-qunit": "^6.2.0",
"loader.js": "^4.7.0",
- "qunit-dom": "^0.8.4"
+ "npm-run-all": "^4.1.5",
+ "prettier": "^2.5.1",
+ "qunit": "^2.17.2",
+ "qunit-dom": "^1.6.0"
},
"engines": {
- "node": "6.* || 8.* || >= 10.*"
+ "node": "12.* || 14.* || >= 16"
+ },
+ "ember": {
+ "edition": "octane"
}
}
diff --git a/test/fixtures/with-telemetry/input/testem.js b/test/fixtures/with-telemetry/input/testem.js
index 726d18799..ed2f37124 100644
--- a/test/fixtures/with-telemetry/input/testem.js
+++ b/test/fixtures/with-telemetry/input/testem.js
@@ -1,25 +1,23 @@
+'use strict';
+
module.exports = {
test_page: 'tests/index.html?hidepassed',
disable_watching: true,
- launch_in_ci: [
- 'Chrome'
- ],
- launch_in_dev: [
- 'Chrome'
- ],
+ launch_in_ci: ['Chrome'],
+ launch_in_dev: ['Chrome'],
+ browser_start_timeout: 120,
browser_args: {
Chrome: {
ci: [
// --no-sandbox is needed when running Chrome inside a container
process.env.CI ? '--no-sandbox' : null,
'--headless',
- '--disable-gpu',
'--disable-dev-shm-usage',
'--disable-software-rasterizer',
'--mute-audio',
'--remote-debugging-port=0',
- '--window-size=1440,900'
- ].filter(Boolean)
- }
- }
+ '--window-size=1440,900',
+ ].filter(Boolean),
+ },
+ },
};
diff --git a/test/fixtures/with-telemetry/input/tests/index.html b/test/fixtures/with-telemetry/input/tests/index.html
index cd1f0c95d..6d60dd096 100644
--- a/test/fixtures/with-telemetry/input/tests/index.html
+++ b/test/fixtures/with-telemetry/input/tests/index.html
@@ -21,7 +21,14 @@
{{content-for "body"}}
{{content-for "test-body"}}
-
+
+
+
+
diff --git a/test/fixtures/with-telemetry/input/tests/test-helper.js b/test/fixtures/with-telemetry/input/tests/test-helper.js
index 0382a848d..c54b36ac7 100644
--- a/test/fixtures/with-telemetry/input/tests/test-helper.js
+++ b/test/fixtures/with-telemetry/input/tests/test-helper.js
@@ -1,8 +1,12 @@
-import Application from '../app';
-import config from '../config/environment';
+import Application from 'app/app';
+import config from 'app/config/environment';
+import * as QUnit from 'qunit';
import { setApplication } from '@ember/test-helpers';
+import { setup } from 'qunit-dom';
import { start } from 'ember-qunit';
setApplication(Application.create(config.APP));
+setup(QUnit.assert);
+
start();
diff --git a/test/fixtures/with-telemetry/output/app/app.js b/test/fixtures/with-telemetry/output/app/app.js
index b3b2bd677..dcf416e18 100644
--- a/test/fixtures/with-telemetry/output/app/app.js
+++ b/test/fixtures/with-telemetry/output/app/app.js
@@ -1,14 +1,12 @@
import Application from '@ember/application';
-import Resolver from './resolver';
+import Resolver from 'ember-resolver';
import loadInitializers from 'ember-load-initializers';
-import config from './config/environment';
+import config from 'app/config/environment';
-const App = Application.extend({
- modulePrefix: config.modulePrefix,
- podModulePrefix: config.podModulePrefix,
- Resolver
-});
+export default class App extends Application {
+ modulePrefix = config.modulePrefix;
+ podModulePrefix = config.podModulePrefix;
+ Resolver = Resolver;
+}
loadInitializers(App, config.modulePrefix);
-
-export default App;
diff --git a/test/fixtures/with-telemetry/output/app/resolver.js b/test/fixtures/with-telemetry/output/app/resolver.js
deleted file mode 100644
index 2fb563d6c..000000000
--- a/test/fixtures/with-telemetry/output/app/resolver.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import Resolver from 'ember-resolver';
-
-export default Resolver;
diff --git a/test/fixtures/with-telemetry/output/app/router.js b/test/fixtures/with-telemetry/output/app/router.js
index d0bb00952..7458feb73 100644
--- a/test/fixtures/with-telemetry/output/app/router.js
+++ b/test/fixtures/with-telemetry/output/app/router.js
@@ -1,12 +1,9 @@
import EmberRouter from '@ember/routing/router';
-import config from './config/environment';
+import config from 'app/config/environment';
-const Router = EmberRouter.extend({
- location: config.locationType,
- rootURL: config.rootURL
-});
+export default class Router extends EmberRouter {
+ location = config.locationType;
+ rootURL = config.rootURL;
+}
-Router.map(function() {
-});
-
-export default Router;
+Router.map(function () {});
diff --git a/test/fixtures/with-telemetry/output/app/templates/components/.gitkeep b/test/fixtures/with-telemetry/output/app/templates/components/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/test/fixtures/with-telemetry/output/app/templates/components/file-less.hbs b/test/fixtures/with-telemetry/output/app/templates/components/file-less.hbs
index 65a8f749d..4c50d5d9c 100644
--- a/test/fixtures/with-telemetry/output/app/templates/components/file-less.hbs
+++ b/test/fixtures/with-telemetry/output/app/templates/components/file-less.hbs
@@ -1,2 +1,2 @@
this template has no js
-Primary
+Primary