mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
chore(): add cirlceci saucelabs testing
This commit is contained in:
@@ -9,6 +9,6 @@ machine:
|
||||
dependencies:
|
||||
pre:
|
||||
- npm install -g protractor gulp
|
||||
test:
|
||||
test:
|
||||
override:
|
||||
- ./scripts/shippable/ci.sh
|
||||
|
||||
@@ -2,6 +2,7 @@ var _ = require('lodash');
|
||||
var buildConfig = require('../build.config');
|
||||
var connect = require('connect');
|
||||
var cp = require('child_process');
|
||||
var gutil = require('gulp-util');
|
||||
var http = require('http');
|
||||
var karma = require('karma').server;
|
||||
var uuid = require('node-uuid');
|
||||
@@ -16,10 +17,12 @@ module.exports = function(gulp, argv) {
|
||||
*/
|
||||
var sauceInstance;
|
||||
gulp.task('sauce-connect', function(done) {
|
||||
gutil.log('sauce-connect parameters: ', _.pick(process.env, ['SAUCE_USER', 'SAUCE_KEY', 'SAUCE_TUNNEL_ID']));
|
||||
require('sauce-connect-launcher')({
|
||||
username: process.env.SAUCE_USER,
|
||||
accessKey: process.env.SAUCE_KEY,
|
||||
tunnelIdentifier: process.env.SAUCE_TUNNEL_ID
|
||||
tunnelIdentifier: process.env.SAUCE_TUNNEL_ID || 0,
|
||||
verbose: true
|
||||
}, function(err, instance) {
|
||||
if (err) return done('Failed to launch sauce connect!');
|
||||
sauceInstance = instance;
|
||||
@@ -27,9 +30,9 @@ module.exports = function(gulp, argv) {
|
||||
});
|
||||
});
|
||||
|
||||
gulp.task('sauce-disconnect', function(done) {
|
||||
sauceInstance && sauceInstance.close(done) || done();
|
||||
});
|
||||
function sauceDisconnect(done) {
|
||||
sauceInstance ? sauceInstance.close(done) : done();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@@ -45,31 +48,30 @@ module.exports = function(gulp, argv) {
|
||||
|
||||
gulp.task('karma-watch', function(done) {
|
||||
karmaConf.singleRun = false;
|
||||
|
||||
karma.start(karmaConf, done);
|
||||
});
|
||||
|
||||
gulp.task('karma-sauce', ['sauce-connect'], function(done) {
|
||||
return karma.start(karmaSauceConf, function() {
|
||||
sauceDisconnect(done);
|
||||
});
|
||||
gulp.task('karm-sauce', ['run-karma-sauce'], sauceDisconnect);
|
||||
gulp.task('run-karma-sauce', ['sauce-connect'], function(done) {
|
||||
return karma.start(karmaSauceConf, done);
|
||||
});
|
||||
|
||||
|
||||
/*
|
||||
* Protractor Snapshot Tests
|
||||
*/
|
||||
var connectServer;
|
||||
gulp.task('snapshot-server', function() {
|
||||
var protractorHttpServer;
|
||||
gulp.task('protractor-server', function() {
|
||||
var app = connect().use(connect.static(__dirname + '/../../dist/ionic-demo'));
|
||||
connectServer = http.createServer(app).listen(buildConfig.protractorPort);
|
||||
protractorHttpServer = http.createServer(app).listen(buildConfig.protractorPort);
|
||||
});
|
||||
|
||||
gulp.task('snapshot', ['snapshot-server'], function(done) {
|
||||
snapshot(done, 'config/protractor.conf.js');
|
||||
});
|
||||
|
||||
gulp.task('snapshot-sauce', ['sauce-connect', 'snapshot-server'], function(done) {
|
||||
gulp.task('snapshot-sauce', ['run-snapshot-sauce'], sauceDisconnect);
|
||||
gulp.task('run-snapshot-sauce', ['sauce-connect', 'protractor-server'], function(done) {
|
||||
snapshot(done, 'config/protractor-sauce.conf.js');
|
||||
});
|
||||
|
||||
@@ -97,11 +99,20 @@ module.exports = function(gulp, argv) {
|
||||
}
|
||||
|
||||
function protractor(done, args) {
|
||||
cp.spawn('protractor', args, { stdio: 'inherit' })
|
||||
.on('exit', function(code) {
|
||||
connectServer && connectServer.close();
|
||||
if (code) return done('Protector test(s) failed. Exit code: ' + code);
|
||||
done();
|
||||
var child = cp.spawn('protractor', args, {
|
||||
stdio: [process.stdin, process.stdout, 'pipe']
|
||||
});
|
||||
|
||||
var finish = _.once(function(err) {
|
||||
err && done(err) || done();
|
||||
protractorHttpServer.close();
|
||||
});
|
||||
|
||||
child.stderr.on('data', function(data) {
|
||||
finish('Protractor tests failed. Error:', data.toString());
|
||||
});
|
||||
child.on('exit', function() {
|
||||
finish();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -19,7 +19,7 @@ var IonicSnapshot = function(options) {
|
||||
self.appId = options.appId || 'test_app';
|
||||
self.testId = options.testId || 'test_id';
|
||||
self.domain = options.domain || 'ionic-snapshot.appspot.com';
|
||||
self.sleepBetweenSpecs = options.sleepBetweenSpecs || 400;
|
||||
self.sleepBetweenSpecs = options.sleepBetweenSpecs || 600;
|
||||
self.startTime = Date.now();
|
||||
self.totalCompares = 0;
|
||||
self.totalRMS = 0;
|
||||
|
||||
@@ -9,7 +9,8 @@ exports.config = {
|
||||
// Options to be passed to Jasmine-node.
|
||||
jasmineNodeOpts: {
|
||||
showColors: true, // Use colors in the command line report.
|
||||
defaultTimeoutInterval: 120000
|
||||
defaultTimeoutInterval: 120000,
|
||||
isVerbose: true
|
||||
},
|
||||
|
||||
baseUrl: 'http://localhost:' + buildConfig.protractorPort,
|
||||
|
||||
@@ -1,22 +1,24 @@
|
||||
#!/bin/bash
|
||||
|
||||
function init {
|
||||
# Set variables if they aren't, for local testing
|
||||
if [[ "$SNAPSHOT_BROWSER" == "" ]]; then
|
||||
export SNAPSHOT_BROWSER=chrome
|
||||
export SNAPSHOT_BROWSER_ID=chrome_desktop_test
|
||||
export SNAPSHOT_WIDTH=400
|
||||
export SNAPSHOT_HEIGHT=800
|
||||
export SNAPSHOT_TEST_ID=$RANDOM
|
||||
export SAUCE_TUNNEL_ID=$RANDOM
|
||||
export SAUCE_BUILD_ID=$RANDOM
|
||||
else
|
||||
export SNAPSHOT_TEST_ID=$CIRCLE_SHA1
|
||||
export SAUCE_TUNNEL_ID=$CIRCLE_BUILD_NUM
|
||||
export SAUCE_BUILD_ID=$CIRCLE_SHA1
|
||||
fi
|
||||
}
|
||||
|
||||
function run {
|
||||
cd ../..
|
||||
|
||||
export SNAPSHOT_TEST_ID=$(git rev-parse HEAD)
|
||||
export SAUCE_TUNNEL_ID=$CIRCLE_BUILD_DUM
|
||||
export SAUCE_BUILD_ID=$CIRCLE_SHA1
|
||||
|
||||
gulp demos --demo-version=nightly
|
||||
|
||||
gulp snapshot-sauce \
|
||||
@@ -1,15 +0,0 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- 0.10.26
|
||||
env:
|
||||
- SNAPSHOT_BROWSER=chrome SNAPSHOT_BROWSER=safari
|
||||
- SNAPSHOT_BROWSER_ID=chrome_desktop_narrow SNAPSHOT_BROWSER_ID=safari_desktop_narrow
|
||||
- SNAPSHOT_WIDTH=400
|
||||
- SNAPSHOT_HEIGHT=800
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
before_install:
|
||||
- npm install -g protractor gulp
|
||||
script:
|
||||
- ./scripts/shippable/ci.sh
|
||||
Reference in New Issue
Block a user