Fix build problem (#1861)

* fix sourcemap
fix relative path and pre publish build
change travis wait
all test run build and remove unused cpx

* global test task
modify publish script to accept options

* appveyor run

* different approach single test run

* make it work the analytics test
modify start demo shell script to use a different registry

* sourcemap demo shell working

* update readme and add install after any clean
add registry option in start.sh script
add develop and normal mode in demo shell
add -d option in start.sh to point to the local components
add -c option in build script to point to the local components
This commit is contained in:
Mario Romano
2017-05-11 18:08:35 +01:00
committed by Eugenio Romano
parent b0be88ec37
commit 6da0eaba37
88 changed files with 3203 additions and 774 deletions

View File

@@ -11,11 +11,7 @@ require('zone.js/dist/jasmine-patch');
require('zone.js/dist/async-test');
require('zone.js/dist/fake-async-test');
var path = '../' + __karma__.config.component + '/src';
console.log('path appContext '+ path);
var appContext;
appContext = require.context('../ng2-alfresco-userinfo/src', true, /\.spec\.ts/);
var appContext = require.context('./src', true, /\.spec\.ts/);
appContext.keys().forEach(appContext);

View File

@@ -0,0 +1,110 @@
var webpackConfig = require('./webpack.test');
module.exports = function (config) {
var _config = {
basePath: '.',
frameworks: ['jasmine-ajax', 'jasmine'],
files: [
'./node_modules/hammerjs/hammer.js',
//diagrams
'./node_modules/chart.js/dist/Chart.js',
'./node_modules/alfresco-js-api/dist/alfresco-js-api.js',
'./node_modules/raphael/raphael.js',
'./node_modules/moment/min/moment.min.js',
'./node_modules/md-date-time-picker/dist/js/mdDateTimePicker.js',
{pattern: './node_modules/ng2-translate/**/*.js', included: false, watched: false},
{pattern: './node_modules/ng2-charts/**/*.js', included: false, served: true, watched: false},
{pattern: './node_modules/md-date-time-picker/**/*.js', included: false, served: true, watched: false},
{pattern: './node_modules/moment/**/*.js', included: false, served: true, watched: false},
// pdf-js
'./node_modules/pdfjs-dist/build/pdf.js',
'./node_modules/pdfjs-dist/build/pdf.worker.js',
'./node_modules/pdfjs-dist/web/pdf_viewer.js',
{pattern: 'karma-test-shim.js', watched: false},
{pattern: './src/assets/**/*.*', included: false, served: true, watched: false},
{pattern: './src/i18n/**/*.*', included: false, served: true, watched: false},
{pattern: './dist/**/*.js', included: false, served: true, watched: false},
{pattern: './dist/**/*.js.map', included: false, served: true, watched: false},
{pattern: './src/**/*.ts', included: false, served: true, watched: false}
],
webpack: webpackConfig,
webpackMiddleware: {
stats: 'errors-only'
},
port: 9876,
// level of logging
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
logLevel: config.LOG_INFO,
colors: true,
autoWatch: true,
captureTimeout: 180000,
browserDisconnectTimeout: 180000,
browserDisconnectTolerance: 3,
browserNoActivityTimeout: 300000,
browsers: ['Chrome'],
customLaunchers: {
Chrome_travis_ci: {
base: 'Chrome',
flags: ['--no-sandbox']
}
},
// Karma plugins loaded
plugins: [
require('./node_modules/karma-jasmine'),
require('./node_modules/karma-coverage'),
require('./node_modules/karma-sourcemap-loader'),
require('./node_modules/karma-jasmine-ajax'),
require('./node_modules/karma-chrome-launcher'),
require('./node_modules/karma-mocha-reporter'),
require('./node_modules/karma-webpack'),
require('./node_modules/karma-jasmine-html-reporter')
],
webpackServer: {
noInfo: true
},
// Coverage reporter generates the coverage
reporters: ['mocha', 'coverage', 'kjhtml'],
preprocessors: {
'karma-test-shim.js': ['webpack', 'sourcemap'],
'./src/**/!(*spec|index|*mock|*model|*event).js': 'coverage'
},
coverageReporter: {
includeAllSources: true,
dir: 'coverage',
subdir: 'report',
reporters: [
{type: 'text'},
{type: 'text-summary'},
{type: 'json', file: 'coverage-final.json'},
{type: 'html'},
{type: 'lcov'}
]
}
};
if (process.env.TRAVIS) {
config.browsers = ['Chrome_travis_ci'];
}
config.set(_config);
};

View File

@@ -5,14 +5,11 @@
"author": "Alfresco Software, Ltd.",
"scripts": {
"clean": "rimraf dist node_modules typings bundles coverage",
"build": "license-check && ../node_modules/webpack/bin/webpack.js --config webpack.build.js --progress --profile --bail",
"license-check": "license-check",
"tslint": "../node_modules/tslint/bin/tslint -c ../config/assets/tslint.json 'src/{,**/}**.ts' 'index.ts' -e '{,**/}**.d.ts'",
"tsc": "../node_modules/typescript/bin/tsc",
"test": "../node_modules/karma/bin/karma start ../config/karma.conf.js --reporters mocha,coverage --single-run --component ng2-alfresco-userinfo",
"test-browser": "../node_modules/karma/bin/karma start ../config/karma.conf.js --reporters kjhtml --component ng2-alfresco-userinfo",
"coverage": "npm run test && ../node_modules/wsrv/bin/wsrv -o -p 9875 ./coverage/report",
"publish:prod": "npm run test && npm publish"
"build": "webpack --config webpack.build.js --progress --profile --bail",
"test": "karma start karma.conf.js --reporters mocha,coverage --single-run --component",
"test-browser": "karma start karma.conf.js --reporters kjhtml --component",
"coverage": "npm run test && wsrv -o -p 9875 ./coverage/report",
"prepublish" : "npm run test"
},
"main": "bundles/ng2-alfresco-userinfo.js",
"repository": {
@@ -47,18 +44,53 @@
"@types/hammerjs": "^2.0.34",
"@types/jasmine": "2.5.35",
"@types/node": "6.0.45",
"angular2-template-loader": "^0.6.2",
"autoprefixer": "^6.5.4",
"cpx": "^1.3.1",
"license-check": "^1.0.4",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "^0.23.1",
"css-to-string-loader": "^0.1.2",
"cssnano": "^3.8.1",
"extract-text-webpack-plugin": "^2.0.0-rc.3",
"file-loader": "0.11.1",
"html-loader": "^0.4.4",
"html-webpack-plugin": "^2.28.0",
"istanbul-instrumenter-loader": "0.2.0",
"jasmine-ajax": "^3.2.0",
"jasmine-core": "2.4.1",
"karma": "^0.13.22",
"karma-chrome-launcher": "~1.0.1",
"karma-coverage": "^1.1.1",
"karma-jasmine": "~1.0.2",
"karma-jasmine-ajax": "^0.1.13",
"karma-jasmine-html-reporter": "0.2.0",
"karma-mocha-reporter": "^2.2.2",
"karma-remap-istanbul": "^0.6.0",
"karma-sourcemap-loader": "^0.3.7",
"karma-systemjs": "^0.16.0",
"karma-webpack": "^2.0.2",
"loader-utils": "^1.1.0",
"merge-stream": "^1.0.1",
"rimraf": "2.5.2",
"null-loader": "^0.1.1",
"package-json-merge": "0.0.1",
"raw-loader": "^0.5.1",
"remap-istanbul": "^0.6.3",
"rimraf": "^2.5.4",
"run-sequence": "^1.2.2",
"script-loader": "0.7.0",
"source-map-loader": "^0.1.6",
"style-loader": "^0.13.1",
"systemjs-builder": "^0.15.34",
"to-string-loader": "^1.1.4",
"traceur": "^0.0.91",
"ts-loader": "^2.0.0",
"ts-node": "^1.7.0",
"tslint": "3.15.1",
"typescript": "^2.0.3",
"wsrv": "^0.1.5"
"tslint": "^4.4.2",
"tslint-loader": "^3.3.0",
"typescript": "^2.1.6",
"webpack": "^2.2.1",
"webpack-dev-server": "^2.3.0",
"webpack-merge": "2.6.1",
"wsrv": "^0.1.7"
},
"keywords": [
"userinfo",

View File

@@ -54,7 +54,7 @@ describe('User info component', () => {
providers: [
EcmUserService,
BpmUserService,
{ provide: AlfrescoTranslationService, useClass: TranslationMock }
{provide: AlfrescoTranslationService, useClass: TranslationMock}
]
}).compileComponents().then(() => {
fixture = TestBed.createComponent(UserInfoComponent);
@@ -105,7 +105,7 @@ describe('User info component', () => {
jasmine.Ajax.requests.mostRecent().respondWith({
status: 200,
contentType: 'application/json',
responseText: JSON.stringify({ entry: fakeEcmEditedUser })
responseText: JSON.stringify({entry: fakeEcmEditedUser})
});
fixture.whenStable().then(() => {
@@ -125,7 +125,7 @@ describe('User info component', () => {
jasmine.Ajax.requests.mostRecent().respondWith({
status: 200,
contentType: 'application/json',
responseText: JSON.stringify({ entry: fakeEcmUser })
responseText: JSON.stringify({entry: fakeEcmUser})
});
}));
@@ -160,7 +160,7 @@ describe('User info component', () => {
jasmine.Ajax.requests.mostRecent().respondWith({
status: 200,
contentType: 'application/json',
responseText: JSON.stringify({ entry: fakeEcmUserNoImage })
responseText: JSON.stringify({entry: fakeEcmUserNoImage})
});
}));
@@ -181,88 +181,110 @@ describe('User info component', () => {
describe('when user is logged on bpm', () => {
beforeEach(() => {
beforeEach(async(() => {
spyOn(stubAuthService, 'isBpmLoggedIn').and.returnValue(true);
spyOn(stubAuthService, 'isLoggedIn').and.returnValue(true);
jasmine.Ajax.install();
userInfoComp.anonymousImageUrl = userInfoComp.anonymousImageUrl.replace('/base/dist', '');
}));
afterEach(() => {
jasmine.Ajax.uninstall();
});
beforeEach(async(() => {
userInfoComp.anonymousImageUrl = userInfoComp.anonymousImageUrl.replace('/base/dist', '');
it('should show full name next the user image', () => {
fixture.detectChanges();
jasmine.Ajax.requests.mostRecent().respondWith({
status: 200,
contentType: 'application/json',
responseText: JSON.stringify(fakeBpmUser)
});
}));
beforeEach(() => {
fixture.whenStable().then(() => {
fixture.detectChanges();
expect(element.querySelector('#userinfo_container')).toBeDefined();
expect(element.querySelector('#bpm-username')).toBeDefined();
expect(element.querySelector('#bpm-username').innerHTML).toContain('fake-bpm-first-name fake-bpm-last-name');
});
});
it('should get the bpm current user image from the service', () => {
fixture.detectChanges();
jasmine.Ajax.requests.mostRecent().respondWith({
status: 200,
contentType: 'application/json',
responseText: JSON.stringify(fakeBpmUser)
});
fixture.whenStable().then(() => {
fixture.detectChanges();
expect(element.querySelector('#userinfo_container')).toBeDefined();
expect(element.querySelector('#logged-user-img')).toBeDefined();
expect(element.querySelector('#logged-user-img').getAttribute('src'))
.toContain('activiti-app/app/rest/admin/profile-picture');
});
});
afterEach(() => {
jasmine.Ajax.uninstall();
});
it('should show full name next the user image', async(() => {
expect(element.querySelector('#userinfo_container')).toBeDefined();
expect(element.querySelector('#bpm-username')).toBeDefined();
expect(element.querySelector('#bpm-username').innerHTML).toContain('fake-bpm-first-name fake-bpm-last-name');
}));
it('should get the bpm current user image from the service', async(() => {
expect(element.querySelector('#userinfo_container')).toBeDefined();
expect(element.querySelector('#logged-user-img')).toBeDefined();
expect(element.querySelector('#logged-user-img').getAttribute('src'))
.toContain('activiti-app/app/rest/admin/profile-picture');
}));
it('should show last name if first name is null', async(() => {
it('should show last name if first name is null', () => {
fixture.detectChanges();
let wrongBpmUser: BpmUserModel = new BpmUserModel({
firstName: null,
lastName: 'fake-last-name'
});
userInfoComp.bpmUser = wrongBpmUser;
fixture.whenStable().then(() => {
fixture.detectChanges();
expect(element.querySelector('#userinfo_container')).toBeDefined();
expect(element.querySelector('#bpm-username')).not.toBeNull();
expect(element.querySelector('#bpm-username').textContent).toContain('fake-last-name');
expect(element.querySelector('#bpm-username').textContent).not.toContain('fake-bpm-first-name');
});
});
it('should not show first name if it is null string', () => {
fixture.detectChanges();
expect(element.querySelector('#userinfo_container')).toBeDefined();
expect(element.querySelector('#bpm-username')).not.toBeNull();
expect(element.querySelector('#bpm-username').textContent).toContain('fake-last-name');
expect(element.querySelector('#bpm-username').textContent).not.toContain('fake-bpm-first-name');
}));
it('should not show first name if it is null string', async(() => {
let wrongFirstNameBpmUser: BpmUserModel = new BpmUserModel({
firstName: 'null',
lastName: 'fake-last-name'
});
userInfoComp.bpmUser = wrongFirstNameBpmUser;
fixture.detectChanges();
expect(element.querySelector('#userinfo_container')).toBeDefined();
expect(element.querySelector('#bpm-full-name')).toBeDefined();
expect(element.querySelector('#bpm-full-name').textContent).toContain('fake-last-name');
expect(element.querySelector('#bpm-full-name').textContent).not.toContain('null');
}));
it('should not show last name if it is null string', async(() => {
fixture.whenStable().then(() => {
fixture.detectChanges();
expect(element.querySelector('#userinfo_container')).toBeDefined();
expect(element.querySelector('#bpm-full-name')).toBeDefined();
expect(element.querySelector('#bpm-full-name').textContent).toContain('fake-last-name');
expect(element.querySelector('#bpm-full-name').textContent).not.toContain('null');
});
});
it('should not show last name if it is null string', () => {
fixture.detectChanges();
let wrongLastNameBpmUser: BpmUserModel = new BpmUserModel({
firstName: 'fake-first-name',
lastName: 'null'
});
userInfoComp.bpmUser = wrongLastNameBpmUser;
fixture.detectChanges();
expect(element.querySelector('#userinfo_container')).toBeDefined();
expect(element.querySelector('#bpm-full-name')).toBeDefined();
expect(element.querySelector('#bpm-full-name').textContent).toContain('fake-first-name');
expect(element.querySelector('#bpm-full-name').textContent).not.toContain('null');
}));
fixture.whenStable().then(() => {
fixture.detectChanges();
expect(element.querySelector('#userinfo_container')).toBeDefined();
expect(element.querySelector('#bpm-full-name')).toBeDefined();
expect(element.querySelector('#bpm-full-name').textContent).toContain('fake-first-name');
expect(element.querySelector('#bpm-full-name').textContent).not.toContain('null');
});
});
it('should not show the tabs', () => {
fixture.detectChanges();
expect(element.querySelector('#tab-bar-env').getAttribute('hidden')).not.toBeNull();
fixture.whenStable().then(() => {
fixture.detectChanges()
expect(element.querySelector('#tab-bar-env').getAttribute('hidden')).not.toBeNull();
});
});
});
@@ -282,7 +304,7 @@ describe('User info component', () => {
jasmine.Ajax.requests.first().respondWith({
status: 200,
contentType: 'application/json',
responseText: JSON.stringify({ entry: fakeEcmUser })
responseText: JSON.stringify({entry: fakeEcmUser})
});
jasmine.Ajax.requests.mostRecent().respondWith({
status: 200,

View File

@@ -0,0 +1,8 @@
const webpack = require('webpack');
const webpackMerge = require('webpack-merge');
const testConfig = require('../config/webpack.test.js');
module.exports = webpackMerge(testConfig, {
});