diff --git a/.travis.yml b/.travis.yml index 4b10c77c..7e9dab43 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,6 +20,7 @@ addons: - libssl-dev - gcc-5 - g++-5 + sauce_connect: true install: # Use GCC 5. @@ -27,6 +28,16 @@ install: # Run install step script to download and build dependencies. - chmod +x scripts/install-step.travis.sh - ./scripts/install-step.travis.sh + # Install the latest stable Node.js. The default Node.js version is too old + # for some of the JavaScript syntax used. + - npm install -g nvm + - nvm install node + # Install Node.js dependencies + - npm install + # Add local binary path to PATH + - export PATH="./node_modules/.bin:$PATH" + # Install runtime dependencies using Bower + - bower install before_script: # Build Google Test @@ -46,7 +57,9 @@ before_script: # Travis machines are 64 bit, and the dependencies use dynamic linking. - cmake .. -DPROJECT_ARCH=64 -DPROJECT_STATIC_RUNTIME=OFF -DBUILD_SHARED_LIBS=OFF -DGTEST_ROOT=../../googletest-release-1.7.0 -script: make tests && ./tests +script: + - npm test + - make tests && ./tests before_deploy: # Build the metadata validator @@ -69,3 +82,8 @@ notifications: - "chat.freenode.net#loot" use_notice: true skip_join: true + +env: + global: + - secure: OWgDkff/b+0eKk/P75rBnecaPDv1E/gMkCzsTUUtofmzj+sttpMUsh8VOVUvckGs5m3fRwRhc/t99gR4FuDtMOVE5JZ8CqZn7tcv2wNAspQ613pS0nWyIX/IUbyF+gjtPW2dWy81hKVtTP4yFvUn1Gk+JRjJLSyxM53Xt6oTOlY= + - secure: XpGbqizjWfaGiWDkrcW4UhSW8ijm00jgSo2qkthza3QmHQ3C0Vye3gQjjITCq+y6izQTPa46fxaI+Ozligyh4aQ1G8SpCa77tXMBfvo31led+s81FlAOSVGDJ/2eDOoawFuj5dTKTPR1zLniDYH8AqG8EDZuLoK6fhx7CchU2Yw= diff --git a/bower.json b/bower.json index 1a57f4da..6895c6a3 100644 --- a/bower.json +++ b/bower.json @@ -37,5 +37,22 @@ "jed-gettext-parser": "~1.0.0", "paper-toggle-button": "Polymer/paper-toggle-button#~0.5.4", "core-overlay": "WrinklyNinja/core-overlay#fix-focus-self-as-next" + }, + "resolutions": { + "polymer": "^0.5", + "core-icons": "^0.5", + "core-icon": "^0.5", + "core-collapse": "^0.5", + "core-focusable": "^0.5", + "core-icon-button": "^0.5", + "core-resizable": "^0.5", + "core-iconset-svg": "^0.5", + "core-dropdown": "null-dimensions-positions-fix", + "core-transition": "^0.5", + "core-overlay": "fix-focus-self-as-next", + "webcomponentsjs": "^0.7.18", + "core-iconset": "^0.5", + "core-selection": "^0.5", + "core-meta": "^0.5" } } diff --git a/gruntfile.js b/gruntfile.js new file mode 100644 index 00000000..137560c0 --- /dev/null +++ b/gruntfile.js @@ -0,0 +1,39 @@ +'use strict'; +module.exports = (grunt) => { + grunt.initConfig({ + connect: { + server: { + options: { + base: '', + port: 9999, + }, + }, + }, + 'saucelabs-mocha': { + all: { + options: { + urls: ['http://127.0.0.1:9999/src/tests/gui/html/js/test.html'], + build: process.env.TRAVIS_JOB_ID, + throttled: 3, + browsers: [{ + browserName: 'chrome', + platform: 'Windows 10', + version: '47', + }], + testname: 'LOOT UI JS tests', + }, + }, + }, + watch: {}, + }); + + // Loading dependencies + for (const key in grunt.file.readJSON('package.json').devDependencies) { + if (key !== 'grunt' && key.indexOf('grunt') === 0) { + grunt.loadNpmTasks(key); + } + } + + grunt.registerTask('dev', ['connect', 'watch']); + grunt.registerTask('test', ['connect', 'saucelabs-mocha']); +}; diff --git a/package.json b/package.json index c7133252..609731bb 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,16 @@ "eslint": "^1.10.3", "eslint-config-airbnb": "^2.0.0", "fs-extra": "^0.26.2", + "grunt": "^0.4.5", + "grunt-cli": "^0.1.13", + "grunt-contrib-connect": "^0.11.2", + "grunt-contrib-watch": "^0.6.1", + "grunt-saucelabs": "^8.6.2", "mocha": "^2.3.4", "should": "^8.0.1", "vulcanize": "^0.7.11" + }, + "scripts": { + "test": "grunt test" } } diff --git a/src/tests/gui/html/js/test.html b/src/tests/gui/html/js/test.html index a5d71d3c..7d52378c 100644 --- a/src/tests/gui/html/js/test.html +++ b/src/tests/gui/html/js/test.html @@ -11,8 +11,27 @@