diff --git a/.gitignore b/.gitignore index 130072463..b8db21e09 100644 --- a/.gitignore +++ b/.gitignore @@ -87,6 +87,11 @@ rkt-* /ui/testem.log .ignore +# ember-try +/ui/.node_modules.ember-try/ +/ui/bower.json.ember-try +/ui/package.json.ember-try + # generated routes file command/agent/bindata_assetfs.go diff --git a/ui/.eslintrc.js b/ui/.eslintrc.js index 9cf8e868a..f75da3c33 100644 --- a/ui/.eslintrc.js +++ b/ui/.eslintrc.js @@ -31,8 +31,10 @@ module.exports = { { files: [ '.eslintrc.js', + '.template-lintrc.js', 'ember-cli-build.js', 'testem.js', + 'blueprints/*/index.js', 'config/**/*.js', 'lib/*/index.js', ], diff --git a/ui/.template-lintrc.js b/ui/.template-lintrc.js new file mode 100644 index 000000000..b45e96ffd --- /dev/null +++ b/ui/.template-lintrc.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = { + extends: 'recommended' +}; diff --git a/ui/README.md b/ui/README.md index 813f63d6f..f3a3c885a 100644 --- a/ui/README.md +++ b/ui/README.md @@ -49,6 +49,16 @@ Nomad UI tests can be run independently of Nomad golang tests. * `ember test` (single run, headless browser) * `ember test --server` (watches for changes, runs in a full browser) + + +### Linting + +Linting should happen automatically in your editor and when committing changes, but it can also be invoked manually. + +* `npm run lint:hbs` +* `npm run lint:js` +* `npm run lint:js -- --fix` + ### Building Typically `make release` or `make dev-ui` will be the desired build workflow, but in the event that build artifacts need to be inspected, `ember build` will output compiled files in `ui/dist`. diff --git a/ui/config/optional-features.json b/ui/config/optional-features.json new file mode 100644 index 000000000..21f1dc719 --- /dev/null +++ b/ui/config/optional-features.json @@ -0,0 +1,3 @@ +{ + "jquery-integration": true +} diff --git a/ui/package.json b/ui/package.json index 436caae35..79092e3b8 100644 --- a/ui/package.json +++ b/ui/package.json @@ -2,25 +2,34 @@ "name": "nomad-ui", "version": "0.0.0", "description": "The web ui for Nomad, by HashiCorp.", + "repository": "", "directories": { "doc": "doc", "test": "tests" }, - "repository": "", "scripts": { "build": "./node_modules/ember-cli/bin/ember build -prod", - "start": "./node_modules/ember-cli/bin/ember server", - "test": "./node_modules/ember-cli/bin/ember test", "precommit": "lint-staged", - "lint:js": "eslint ." + "lint:hbs": "ember-template-lint .", + "lint:js": "eslint .", + "start": "./node_modules/ember-cli/bin/ember server", + "test": "./node_modules/ember-cli/bin/ember test" }, "lint-staged": { - "'{app,tests,config,lib,mirage}/**/*.js'": ["prettier --write", "git add"], - "'app/styles/**/*.*'": ["prettier --write", "git add"] + "'{app,tests,config,lib,mirage}/**/*.js'": [ + "prettier --write", + "git add" + ], + "'app/styles/**/*.*'": [ + "prettier --write", + "git add" + ] }, "devDependencies": { + "@ember/jquery": "^0.5.2", + "@ember/optional-features": "^0.6.3", "babel-plugin-transform-object-rest-spread": "^6.26.0", - "broccoli-asset-rev": "^2.4.5", + "broccoli-asset-rev": "^2.7.0", "bulma": "0.6.1", "core-js": "^2.4.1", "d3-array": "^1.2.0", @@ -31,63 +40,67 @@ "d3-shape": "^1.2.0", "d3-time-format": "^2.1.0", "d3-transition": "^1.1.0", - "ember-ajax": "^3.0.0", + "ember-ajax": "^3.1.0", "ember-auto-import": "^1.0.1", - "ember-cli": "~3.0.4", - "ember-cli-babel": "^6.0.0", - "ember-cli-dependency-checker": "^2.1.0", + "ember-cli": "~3.4.4", + "ember-cli-babel": "^6.16.0", + "ember-cli-dependency-checker": "^3.0.0", "ember-cli-deprecation-workflow": "^1.0.1", "ember-cli-eslint": "^4.2.3", "ember-cli-funnel": "^0.6.0", - "ember-cli-htmlbars": "^2.0.3", - "ember-cli-htmlbars-inline-precompile": "^1.0.2", - "ember-cli-inject-live-reload": "^1.4.1", + "ember-cli-htmlbars": "^3.0.0", + "ember-cli-htmlbars-inline-precompile": "^1.0.3", + "ember-cli-inject-live-reload": "^1.8.2", "ember-cli-mirage": "^0.4.3", "ember-cli-moment-shim": "^3.5.0", "ember-cli-page-object": "^1.15.1", - "ember-cli-qunit": "^4.2.1", + "ember-cli-qunit": "^4.3.2", "ember-cli-sass": "^7.1.2", - "ember-cli-shims": "^1.2.0", - "ember-cli-sri": "^2.1.0", + "ember-cli-sri": "^2.1.1", "ember-cli-string-helpers": "^1.5.0", - "ember-cli-uglify": "^2.0.0", + "ember-cli-template-lint": "^1.0.0-beta.1", + "ember-cli-uglify": "^2.1.0", "ember-composable-helpers": "^2.0.3", "ember-concurrency": "^0.8.12", - "ember-data": "~3.0.0", + "ember-data": "~3.4.0", "ember-data-model-fragments": "3.0.0-beta.1", "ember-export-application-global": "^2.0.0", "ember-fetch": "^3.4.3", "ember-freestyle": "~0.6.2", "ember-inline-svg": "^0.1.11", - "ember-load-initializers": "^1.0.0", + "ember-load-initializers": "^1.1.0", "ember-maybe-import-regenerator": "^0.1.6", "ember-moment": "^7.5.0", "ember-native-dom-helpers": "^0.5.4", "ember-power-select": "^2.2.3", - "ember-resolver": "^4.5.0", + "ember-resolver": "^5.0.1", "ember-responsive": "^3.0.0", "ember-sinon": "^1.0.1", - "ember-source": "~3.0.0", + "ember-source": "~3.4.0", "ember-test-selectors": "^0.3.8", "ember-truth-helpers": "^2.0.0", - "ember-welcome-page": "^3.0.0", + "ember-welcome-page": "^3.2.0", "eslint": "^4.13.1", "flat": "^4.0.0", "fuse.js": "~3.2.0", "husky": "^0.14.3", "ivy-codemirror": "^2.1.0", "lint-staged": "^6.0.0", - "loader.js": "^4.2.3", + "loader.js": "^4.7.0", "lodash.intersection": "^4.4.0", "prettier": "^1.4.4", - "query-string": "^5.0.0" + "query-string": "^5.0.0", + "qunit-dom": "^0.7.1" }, "engines": { - "node": ">= 4" + "node": "6.* || 8.* || >= 10.*" }, "private": true, "ember-addon": { - "paths": ["lib/bulma", "lib/calendar"] + "paths": [ + "lib/bulma", + "lib/calendar" + ] }, "dependencies": { "lru_map": "^0.3.3" diff --git a/ui/testem.js b/ui/testem.js index 919ed563a..3015d63d2 100644 --- a/ui/testem.js +++ b/ui/testem.js @@ -10,14 +10,17 @@ module.exports = { // ci: ['--headless', '--disable-gpu', '--remote-debugging-port=9222', '--window-size=1440,900'], // }, Chrome: { - mode: 'ci', - args: [ + ci: [ + // --no-sandbox is needed when running Chrome inside a container + process.env.CI ? '--no-sandbox' : null, '--headless', - '--no-sandbox', '--disable-gpu', - '--remote-debugging-port=9222', - '--window-size=1440,900', - ], - }, - }, + '--disable-dev-shm-usage', + '--disable-software-rasterizer', + '--mute-audio', + '--remote-debugging-port=0', + '--window-size=1440,900' + ].filter(Boolean) + } + } };