From b9171721f93ca084f99aafade7d1cc4b1d02b697 Mon Sep 17 00:00:00 2001 From: Vitaly Puzrin Date: Fri, 28 Feb 2014 00:22:56 +0400 Subject: [PATCH] added saucelabs tests runner --- Gruntfile.js | 78 ++++++++++++++++++++++++++++++++++++++ Makefile | 2 +- package.json | 8 ++-- test/browser/browsers.json | 14 ------- test/browser/sauce-run.js | 77 ------------------------------------- test/browser/test.html | 60 ++++++++++++++++++++--------- 6 files changed, 126 insertions(+), 113 deletions(-) create mode 100644 Gruntfile.js delete mode 100644 test/browser/browsers.json delete mode 100755 test/browser/sauce-run.js diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..8c0f521 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,78 @@ +'use strict'; + + +module.exports = function(grunt) { + var browsers = [{ + browserName: 'iphone', + platform: 'OS X 10.8', + version: '6' + }, { + browserName: 'android', + platform: 'Linux', + version: '4.0' + }, { + browserName: 'firefox', + platform: 'XP' + }, { + browserName: 'chrome', + platform: 'XP' + }, { + browserName: 'internet explorer', + platform: 'WIN8', + version: '10' + }, { + browserName: 'internet explorer', + platform: 'VISTA', + version: '9' + }, { + browserName: 'internet explorer', + platform: 'Windows 7', + version: '8' + }, { + browserName: 'internet explorer', + platform: 'XP', + version: '7' + }, { + browserName: 'opera', + platform: 'Windows 2008', + version: '12' + }, { + browserName: 'safari', + platform: 'OS X 10.8', + version: '6' + }]; + + + grunt.initConfig({ + connect: { + server: { + options: { + base: '', + port: 9999 + } + } + }, + 'saucelabs-mocha': { + all: { + options: { + urls: ['http://127.0.0.1:9999/test/browser/test.html'], + tunnelTimeout: 5, + build: process.env.TRAVIS_JOB_ID, + concurrency: 3, + browsers: browsers, + testname: process.env.SAUCE_PROJ || 'mocha tests', + tags: ['master'] + } + } + }, + watch: {} + }); + + // Loading dependencies + for (var 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/Makefile b/Makefile index 28875ad..28c95b0 100644 --- a/Makefile +++ b/Makefile @@ -32,7 +32,7 @@ test: lint test-browser: lint rm -f ./test/browser/pako.js browserify -r ./ -s pako > test/browser/pako.js - @SAUCE_PROJ=${GITHUB_PROJ} test/browser/sauce-run.js + @SAUCE_PROJ=${GITHUB_PROJ} grunt test cover: rm -rf cover diff --git a/package.json b/package.json index ee04e98..49b9f6d 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,10 @@ "lodash": "2.4.1", "async": "0.2.10", - "mocha-cloud": "*", - "mocha-cloud-grid-view": "*", - "term-canvas": "*" + "grunt": "~0.4.0", + "grunt-cli": "~0.1.6", + "grunt-saucelabs": "~4.0.2", + "grunt-contrib-connect": "~0.1.2", + "grunt-contrib-watch": "~0.2.0" } } diff --git a/test/browser/browsers.json b/test/browser/browsers.json deleted file mode 100644 index a8b7fbc..0000000 --- a/test/browser/browsers.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { "browserName": "iphone", "platform": "OS X 10.8", "version": "6" }, - { "browserName": "android", "platform": "Linux", "version": "4.0" }, - { "browserName": "firefox", "platform": "XP" }, - { "browserName": "chrome", "platform": "XP" }, - - { "browserName": "internet explorer", "platform": "WIN8", "version": "10" }, - { "browserName": "internet explorer", "platform": "VISTA", "version": "9" }, - { "browserName": "internet explorer", "platform": "Windows 7","version": "8" }, - { "browserName": "internet explorer", "platform": "XP", "version": "7" }, - - { "browserName": "opera", "platform": "Windows 2008","version": "12" }, - { "browserName": "safari", "platform": "OS X 10.8", "version": "6" } -] diff --git a/test/browser/sauce-run.js b/test/browser/sauce-run.js deleted file mode 100755 index 8a7b8af..0000000 --- a/test/browser/sauce-run.js +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/env node - -/* You have to setup 3 enviroment variables to run this script: - * - * SAUCE_PROJ - project name - * SAUCE_USER - saucelabs user name - * SAUCE_AUTH - saucelabs authorisation token - */ - -'use strict'; - -var Cloud = require('mocha-cloud'); -/* , Canvas = require('term-canvas') - , size = process.stdout.getWindowSize() - , GridView = require('mocha-cloud-grid-view');*/ - -/*if (!process.env.SAUCE_PROJ || !process.env.SAUCE_USER || !process.env.SAUCE_AUTH) { - console.err('You must set enviroment variables SAUCE_PROJ, SAUCE_USER and SAUCE_AUTH'); - process.exit(1); -}*/ - -var cloud = new Cloud(process.env.SAUCE_PROJ, process.env.SAUCE_USER, process.env.SAUCE_AUTH); - -// the browsers to test - -var browsers = require('./browsers.json'); - -browsers.forEach(function(browser) { - cloud.browser(browser.browserName, browser.version, browser.platform); -}); - -// the local url to test - -cloud.url('http://localhost:3000/test/browser/'); - -// setup - -/*var canvas = new Canvas(size[0], size[1]); -var ctx = canvas.getContext('2d'); -var grid = new GridView(cloud, ctx); -grid.size(canvas.width, canvas.height); -ctx.hideCursor(); - -// trap SIGINT - -process.on('SIGINT', function(){ - ctx.reset(); - process.nextTick(function(){ - process.exit(); - }); -}); - -// output failure messages -// once complete, and exit > 0 -// accordingly - -cloud.start(function(){ - grid.showFailures(); - setTimeout(function(){ - ctx.showCursor(); - process.exit(grid.totalFailures()); - }, 100); -});*/ - -cloud.on('init', function(browser){ - console.log(' init : %s %s', browser.browserName, browser.version); -}); - -cloud.on('start', function(browser){ - console.log(' start : %s %s', browser.browserName, browser.version); -}); - -cloud.on('end', function(browser, res){ - console.log(' end : %s %s : %d failures', browser.browserName, browser.version, res.failures); -}); - -cloud.start(); diff --git a/test/browser/test.html b/test/browser/test.html index eaad0e7..83887a2 100644 --- a/test/browser/test.html +++ b/test/browser/test.html @@ -1,28 +1,52 @@ pako tests - + + + + + + + + +
- - - - - - -