2016-08-26 2 views
2

Ich versuche, meine Karma-Tests in einem Travis-Ci-Build laufen zu lassen. Ich habe herausgefunden, wie man Chrom in Gang bringt, aber jetzt gibt es einen Fehler. Ich erlebe diesen Fehler jedoch nicht lokal, also nehme ich an, dass er etwas mit der Travis-Ci- Umgebung zu tun haben muss.Uncaught SyntaxError: Verwendung von const im strikten Modus | Travis-ci Karma-Test mit Chromwürfen

26 08 2016 17:43:47.109:INFO [karma]: Karma v1.2.0 server started at http://localhost:9876/ 
26 08 2016 17:43:47.112:INFO [launcher]: Launching browser Chrome_travis_ci with unlimited concurrency 
26 08 2016 17:43:47.279:INFO [launcher]: Starting browser Chromium 
26 08 2016 17:43:49.456:INFO [Chromium 37.0.2062 (Ubuntu 0.0.0)]: Connected on socket /#NbeFghd0qtvN2-vKAAAA with id 90741507 
Chromium 37.0.2062 (Ubuntu 0.0.0) ERROR 
    Uncaught SyntaxError: Use of const in strict mode. 
    at webpack:///src/app/app.spec.ts:1:0 <- spec-bundle.js:46116 

spec-bundle.js

/** 
* @author: @AngularClass 
*/ 

Error.stackTraceLimit = Infinity; 

require('core-js/es6'); 
require('core-js/es7/reflect'); 

// Typescript emit helpers polyfill 
require('ts-helpers'); 

require('zone.js/dist/zone'); 
require('zone.js/dist/long-stack-trace-zone'); 
require('zone.js/dist/async-test'); 
require('zone.js/dist/fake-async-test'); 
require('zone.js/dist/sync-test'); 
require('zone.js/dist/proxy'); 
require('zone.js/dist/jasmine-patch'); 

// RxJS 
require('rxjs/Rx'); 

var testing = require('@angular/core/testing'); 
var browser = require('@angular/platform-browser-dynamic/testing'); 

testing.setBaseTestProviders(
    browser.TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, 
    browser.TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS 
); 

/* 
* Ok, this is kinda crazy. We can use the the context method on 
* require that webpack created in order to tell webpack 
* what files we actually want to require or import. 
* Below, context will be an function/object with file names as keys. 
* using that regex we are saying look in ./src/app and ./test then find 
* any file that ends with spec.js and get its path. By passing in true 
* we say do this recursively 
*/ 
var testContext = require.context('../src', true, /\.spec\.ts/); 

/* 
* get all the files, for each file, call the context function 
* that will require the file and load it up here. Context will 
* loop and require those spec files here 
*/ 
function requireAll(requireContext) { 
    return requireContext.keys().map(requireContext); 
} 

// requires and returns all modules that match 
var modules = requireAll(testContext); 

app.spec.ts

import { addProviders, inject } from '@angular/core/testing'; 

// Load the implementations that should be tested 
import { AppComponent } from './app.component'; 

describe('AppComponent',() => { 
    // provide our implementations or mocks to the dependency injector 
    beforeEach(() => addProviders([AppComponent])); 

    it('should have a name', inject([AppComponent], (app) => { 
    expect(app.name).toEqual('spring-boot-angular2'); 
    })); 

}); 

karma.conf.js

/** 
* @author: @AngularClass 
*/ 
var path = require('path'); 

module.exports = function(config) { 
    var testWebpackConfig = require('./webpack.test.js'); 

    var configuration = { 

    // base path that will be used to resolve all patterns (e.g. files, exclude) 
    basePath: '', 

    /* 
    * Frameworks to use 
    * 
    * available frameworks: https://npmjs.org/browse/keyword/karma-adapter 
    */ 
    frameworks: ['jasmine'], 

    // list of files to exclude 
    exclude: [ ], 

    /* 
    * list of files/patterns to load in the browser 
    * 
    * we are building the test environment in ./spec-bundle.js 
    */ 
    files: [ { pattern: './spec-bundle.js', watched: false } ], 

    /* 
    * preprocess matching files before serving them to the browser 
    * available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor 
    */ 
    preprocessors: { './spec-bundle.js': ['coverage', 'webpack', 'sourcemap'] }, 

    // Webpack Config at ./webpack.test.js 
    webpack: testWebpackConfig, 

    coverageReporter: { 
     dir : '../coverage/', 
     reporters: [ 
     { type: 'text-summary' }, 
     { type: 'json' }, 
     { type: 'html' } 
     ] 
    }, 

    // Webpack please don't spam the console when running in karma! 
    webpackServer: { noInfo: true }, 

    /* 
    * test results reporter to use 
    * 
    * possible values: 'dots', 'progress' 
    * available reporters: https://npmjs.org/browse/keyword/karma-reporter 
    */ 
    reporters: [ 'mocha', 'coverage' ], 

    // web server port 
    port: 9876, 

    // enable/disable colors in the output (reporters and logs) 
    colors: true, 

    /* 
    * level of logging 
    * possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG 
    */ 
    logLevel: config.LOG_INFO, 

    // do not fail on empty test suite 
    //failOnEmptyTestSuite: false, 

    // enable/disable watching file and executing tests whenever any file changes 
    autoWatch: false, 

    /* 
    * start these browsers 
    * available browser launchers: https://npmjs.org/browse/keyword/karma-launcher 
    */ 
    browsers: [ 
     'Chromium' 
    ], 

    customLaunchers: { 
     Chrome_travis_ci: { 
     base: 'Chromium', 
     chromeDataDir: path.resolve(__dirname, '.chrome'), 
     flags: ['--no-sandbox'] 
     } 
    }, 

    /* 
    * Continuous Integration mode 
    * if true, Karma captures browsers, runs the tests and exits 
    */ 
    singleRun: true 
    }; 

    if(process.env.TRAVIS){ 
    configuration.browsers = ['Chrome_travis_ci']; 
    } 

    config.set(configuration); 
}; 

Antwort

3

Hinzufügen dist: trusty löste mein Problem. Gefunden meine Antwort here

voll .travis.yml

sudo: required 
dist: trusty 

language: java 

before_install: 
    - sudo apt-get update 
    - sudo apt-get install -y libappindicator1 fonts-liberation 
    - wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb 
    - sudo dpkg -i google-chrome*.deb 
    - export CHROME_BIN=/usr/bin/google-chrome 
    - export DISPLAY=:99.0 
    - sh -e /etc/init.d/xvfb start 

jdk: 
    - oraclejdk8 

before_cache: 
    - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock 
cache: 
    directories: 
    - $HOME/.gradle/caches/ 
    - $HOME/.gradle/wrapper/ 
Verwandte Themen