refactor: Organize protractor setup

This commit is contained in:
Blade Barringer
2016-03-13 16:41:17 -05:00
parent 0b65292e4b
commit 17d2efb822
5 changed files with 24 additions and 29 deletions

View File

@@ -99,7 +99,7 @@
"test:karma:watch": "karma start", "test:karma:watch": "karma start",
"test:prepare:webdriver": "webdriver-manager update", "test:prepare:webdriver": "webdriver-manager update",
"test:e2e:webdriver": "webdriver-manager start", "test:e2e:webdriver": "webdriver-manager start",
"test:e2e": "protractor protractor.conf.js", "test:e2e": "protractor test/e2e/protractor.conf.js",
"test:nodemon": "gulp test:nodemon", "test:nodemon": "gulp test:nodemon",
"start": "gulp run:dev", "start": "gulp run:dev",
"sprites": "gulp sprites:compile", "sprites": "gulp sprites:compile",

View File

@@ -269,9 +269,6 @@ gulp.task('test:e2e', ['test:prepare', 'test:prepare:server'], (cb) => {
let runner = exec( let runner = exec(
'npm run test:e2e', 'npm run test:e2e',
(err, stdout, stderr) => { (err, stdout, stderr) => {
/*
* Note: As it stands, protractor wont report pending specs
*/
support.forEach(kill); support.forEach(kill);
cb(err); cb(err);
} }
@@ -293,9 +290,6 @@ gulp.task('test:e2e:safe', ['test:prepare', 'test:prepare:server'], (cb) => {
let runner = exec( let runner = exec(
'npm run test:e2e', 'npm run test:e2e',
(err, stdout, stderr) => { (err, stdout, stderr) => {
/*
* Note: As it stands, protractor wont report pending specs
*/
let match = stdout.match(/(\d+) tests?.*(\d) failures?/); let match = stdout.match(/(\d+) tests?.*(\d) failures?/);
testResults.push({ testResults.push({

17
test/e2e/helper.js Normal file
View File

@@ -0,0 +1,17 @@
import fs from 'fs';
// based on https://github.com/angular/protractor/issues/114#issuecomment-29046939
afterEach(async function () {
let lastTest = this.currentTest;
if (lastTest.state === 'failed') {
let filename = `exception_${lastTest.title}.png`;
let png = await browser.takeScreenshot();
let buffer = new Buffer(png, 'base64');
let stream = fs.createWriteStream(filename);
stream.write(buffer);
stream.end();
}
});

View File

@@ -1,10 +1,13 @@
'use strict' 'use strict';
let chai = require('chai');
let chaiAsPromised = require('chai-as-promised');
require('babel-register'); require('babel-register');
require('babel-polyfill'); require('babel-polyfill');
exports.config = { exports.config = {
specs: 'test/e2e/**/*.js', specs: ['./helper.js', './**/*.test.js'],
baseUrl: 'http://localhost:3003/', baseUrl: 'http://localhost:3003/',
directConnect: true, directConnect: true,
seleniumAddress: 'http://localhost:4444/wd/hub', seleniumAddress: 'http://localhost:4444/wd/hub',
@@ -13,12 +16,10 @@ exports.config = {
reporter: 'spec', reporter: 'spec',
slow: 6000, slow: 6000,
timeout: 10000, timeout: 10000,
compilers: 'js:babel-register' compilers: 'js:babel-register',
}, },
onPrepare: () => { onPrepare: () => {
browser.ignoreSynchronization = true; browser.ignoreSynchronization = true;
let chai = require('chai');
let chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised); chai.use(chaiAsPromised);
global.expect = chai.expect; global.expect = chai.expect;

View File

@@ -1,26 +1,9 @@
import fs from 'fs';
describe('Static Front Page', () => { describe('Static Front Page', () => {
beforeEach(() => { beforeEach(() => {
browser.get('/'); browser.get('/');
browser.sleep(1000); browser.sleep(1000);
}); });
// based on https://github.com/angular/protractor/issues/114#issuecomment-29046939
afterEach(async function () {
let lastTest = this.currentTest;
if (lastTest.state === 'failed') {
let filename = `exception_${lastTest.title}.png`;
let png = await browser.takeScreenshot();
let buffer = new Buffer(png, 'base64');
let stream = fs.createWriteStream(filename);
stream.write(buffer);
stream.end();
}
});
it('shows the front page', async () => { it('shows the front page', async () => {
let button = element(by.id('play-btn')); let button = element(by.id('play-btn'));
await expect(button.getText()).to.eventually.eql('Join for free'); await expect(button.getText()).to.eventually.eql('Join for free');