no more casper etc

This commit is contained in:
Peter Cottle 2016-02-14 09:02:37 -08:00
parent 7199cce804
commit 6d59d90848
17 changed files with 0 additions and 752 deletions

View file

@ -199,10 +199,6 @@ module.exports = function(grunt) {
shell: {
gitAdd: {
command: 'git add build/'
},
casperTest: {
command: 'echo "Running $(ls -1 ./src/__tests__/casperjs/*_test.js | wc -l) tests" && ' +
'ls -1 ./src/__tests__/casperjs/*_test.js | while IFS= read -r line; do casperjs test $line; done'
}
},
jasmine_node: {
@ -215,7 +211,6 @@ module.exports = function(grunt) {
options: {
transform: [require('grunt-react').browserify],
ignore: [
'src/__tests__/casperjs/*.js',
'src/js/__tests__/create.js',
'src/js/__tests__/*.js',
'src/js/native_react_views/*.js',

View file

@ -12,7 +12,6 @@
"browserify": "~3.14.1",
"grunt": "~0.4.2",
"grunt-browserify": "~1.3.0",
"grunt-casperjs": "^2.1.0",
"grunt-cli": "~0.1.11",
"grunt-contrib-clean": "~0.5.0",
"grunt-contrib-jshint": "~0.7.2",
@ -20,7 +19,6 @@
"grunt-hash": "~0.5.0",
"grunt-jasmine-node": "~0.1.0",
"grunt-jsxhint": "^0.5.0",
"grunt-lib-phantomjs": "~0.4.0",
"grunt-react": "^0.12.1",
"grunt-shell-spawn": "~0.3.0",
"jasmine-node": "~1.12.0",

View file

@ -1,228 +0,0 @@
var screenshotCounter = 0;
var screenshotRoot = './src/__tests__/casperjs/screenshots/entirePage';
var CasperUtils = {
start: function(casper, url, callback) {
// Setup some sanity error handling
casper.on('page.error', function(msg, trace) {
casper.echo('Error: ' + msg, 'ERROR');
casper.echo('Stack: ' + JSON.stringify(trace));
});
casper.on('remote.error', function(msg) {
casper.echo('Console Warn: ' + msg, 'ERROR');
});
casper.options.logLevel ="debug";
casper.start(url, callback);
return casper;
},
getRoot: function() {
// Unfortunately this is hardcoded for now :*( cant get the path
// variable synchronously when running this test, and CasperJS does
// not like being started asynchronously.
return '/Users/pcottle/Dropbox (Personal)/wip/learnGitBranching/';
},
getUrl: function () {
return 'file://localhost/' + this.getRoot() + 'index.html?NODEMO';
},
getUrlWithQueryParams: function(params) {
var paramsString = '';
Object.keys(params).forEach(function(key) {
paramsString = paramsString + '&' + key + '=' + params[key];
});
return this.getUrl() + paramsString;
},
getUrlForCommands: function(commands) {
return this.getUrl() + '&command=' + commands.join(';');
},
testDone: function() {
this.test.done();
},
enterCommand: function(command) {
return function then() {
this.sendKeys('#commandTextField', command, { keepFocus: true });
this.page.sendEvent('keypress', this.page.event.key.Enter);
};
},
multiAssert: function() {
// Copy the args into a variable we can reference inside
// our closure.
var asserts = [];
for (var i = 0; i < arguments.length; i++) {
asserts.push(arguments[i]);
}
return function then() {
for (var i = 0; i < asserts.length; i++) {
var assert = asserts[i];
assert.bind(this)();
}
};
},
asserts: {
visibleIDs: function(visibleIDs) {
return function then() {
visibleIDs.forEach(function(id) {
this.test.assertVisible('#' + id);
}.bind(this));
};
},
visibleSelectors: function(selectors) {
return function then() {
selectors.forEach(function(selector) {
this.test.assertVisible(selector);
}.bind(this));
};
},
visibleSelector: function(selector) {
return function then() {
this.test.assertVisible(selector);
};
},
selectorMatchesRegex: function(selector, regex) {
return function then() {
this.test.assertEvalEquals(function(selector, regex) {
return !!document.querySelector(selector).innerText
.match(regex);
},
true,
'Checking that selector "' + selector + '" matches regex "' +
regex + '".',
{selector: selector, regex: regex}
);
};
},
selectorContainsText: function(selector, text) {
return function then() {
this.test.assertEvalEquals(function(selector) {
if (!document.querySelector(selector)) {
return 'Query selector ' + selector + ' did not match!!';
}
return document.querySelector(selector).innerText
.replace(/^\s+/g, '').replace(/\s+$/g, '');
},
text,
'Checking that selector "' + selector + '" contains "' +
text + '".',
{selector: selector}
);
};
},
intlKeyReturns: function(key, text) {
return function then() {
this.test.assertEvalEquals(function(key) {
return intl.str(key);
},
text,
'Checking that intl key "' + key + '" contains "' +
text + '".',
{key: key}
);
};
},
existingIDs: function(existingIDs) {
return function then() {
existingIDs.forEach(function(id) {
this.test.assertExists('#' + id);
}.bind(this));
};
},
existingSelectors: function(existingSelectors) {
return function then() {
existingSelectors.forEach(function(selector) {
this.test.assertExists(selector);
}.bind(this));
};
},
},
screenshot: {
entirePage: function () {
screenshotCounter++;
casper.capture(screenshotRoot + screenshotCounter + '.png', {
top: 0,
left: 0,
// These seem to be the hardcoded viewport dimensions
height: 600,
width: 1000
});
casper.echo('<<< Took screenshot ' + screenshotCounter + ' >>>', 'COMMENT');
}
},
waits: {
jsMount: function() {
return this.evaluate(function() {
var hasHelper = document.querySelectorAll('div.BaseHelperBar').length > 0;
if (hasHelper) {
__utils__.echo('<<< JS mounted >>>');
}
return hasHelper;
});
},
allCommandsFinished: function() {
return this.evaluate(function() {
return document.querySelectorAll('p.commandLine').length ===
document.querySelectorAll('p.finished').length;
});
},
selectorVisible: function(selector) {
return function waitFor() {
return this.evaluate(function() {
return document.querySelectorAll(selector).length > 0;
});
};
},
idsVisible: function(ids) {
return function waitFor() {
return this.evaluate(function() {
var allVisible = true;
for (var i = 0; i < ids.length; i++) {
allVisible = allVisible && __utils__.visible('#' + ids[i]);
}
return allVisible;
});
};
},
idVisible: function(id) {
return function waitFor() {
return this.evaluate(function() {
return __utils__.visible(id);
});
};
},
commandVisible: function() {
return this.evaluate(function() {
return document.querySelectorAll('p.commandLine').length > 0;
});
}
}
};
exports.CasperUtils = CasperUtils;

View file

@ -1,25 +0,0 @@
var CasperUtils = require('./casperUtils').CasperUtils;
CasperUtils.start(casper,
CasperUtils.getUrl(),
function() {
this.test.assertTitle('Learn Git Branching');
casper.waitFor(CasperUtils.waits.jsMount)
.wait(300)
.then(CasperUtils.enterCommand('git commit'))
.wait(800)
.then(CasperUtils.screenshot.entirePage)
.then(function() {
this.page.sendEvent('keypress', this.page.event.key.Up);
})
.wait(700)
.then(CasperUtils.screenshot.entirePage)
// Our command got remembered
.then(CasperUtils.asserts.selectorMatchesRegex(
'#commandLineBar p.command',
// some weird whitespace conversion of non-breaking space
/git\scommit/g
))
.then(CasperUtils.testDone);
}).run();

View file

@ -1,32 +0,0 @@
var CasperUtils = require('./casperUtils').CasperUtils;
CasperUtils.start(casper,
CasperUtils.getUrl(),
function() {
this.test.assertTitle('Learn Git Branching');
casper.waitFor(CasperUtils.waits.jsMount)
.wait(300)
.then(CasperUtils.enterCommand('level intro1'))
.wait(1500)
.then(CasperUtils.asserts.selectorContainsText(
'div.modalView div h2',
'Git Commits'
))
.then(CasperUtils.asserts.selectorContainsText(
'div.modalView.inFront div.inside p',
"A commit in a git repository records a snapshot of all the files in your directory. It's like a giant copy and paste, but even better!"
))
.then(CasperUtils.screenshot.entirePage)
.then(function() {
this.page.sendEvent('keypress', this.page.event.key.Escape);
})
.wait(700)
.then(CasperUtils.screenshot.entirePage)
.then(CasperUtils.asserts.selectorContainsText(
'div.levelNameWrapper',
"Level Introduction to Git Commits"
))
.then(CasperUtils.testDone);
}).run();

View file

@ -1,34 +0,0 @@
var CasperUtils = require('./casperUtils').CasperUtils;
CasperUtils.start(
casper,
CasperUtils.getUrlForCommands([
'asd'
]),
function() {
this.test.assertTitle('Learn Git Branching');
casper.waitFor(CasperUtils.waits.jsMount)
.wait(200)
.then(CasperUtils.screenshot.entirePage)
.then(CasperUtils.asserts.selectorContainsText(
'#command_0 div.commandLineResult p',
'The command "asd" isn\'t supported, sorry!'
))
.then(CasperUtils.enterCommand('git commit'))
.wait(100)
.then(CasperUtils.asserts.selectorContainsText(
'#command_1 p.commandLine span:nth-child(2)',
'git commit'
))
.wait(700)
.then(CasperUtils.enterCommand('git checkout C1'))
.then(CasperUtils.enterCommand('git commit'))
.wait(2000)
.then(CasperUtils.screenshot.entirePage)
.then(CasperUtils.asserts.selectorContainsText(
'#commandDisplay div.commandLineWarnings p span',
"Warning!! Detached HEAD state"
))
.then(CasperUtils.testDone);
}).run();

View file

@ -1,37 +0,0 @@
var CasperUtils = require('./casperUtils').CasperUtils;
CasperUtils.start(casper,
CasperUtils.getUrl(),
function() {
casper.waitFor(CasperUtils.waits.jsMount)
.then(CasperUtils.asserts.visibleSelectors([
'a.intl',
'a.commands',
'a.fb',
'div.helperBar'
]))
.then(CasperUtils.screenshot.entirePage)
.then(function() {
this.mouse.click('a.intl');
})
.wait(500)
.then(CasperUtils.screenshot.entirePage)
.then(CasperUtils.asserts.visibleSelectors([
'a.english',
'a.korean',
'a.japanese',
'a.simpchinese'
]))
.then(function() {
this.mouse.click('a.japanese');
})
.wait(500)
.then(CasperUtils.screenshot.entirePage)
.then(CasperUtils.asserts.selectorContainsText(
'span[data-intl="learn-git-branching"]',
"日本語版リポジトリ"
))
.then(CasperUtils.testDone);
}).run();

View file

@ -1,46 +0,0 @@
var CasperUtils = require('./casperUtils').CasperUtils;
CasperUtils.start(casper,
CasperUtils.getUrl(),
function() {
this.test.assertTitle('Learn Git Branching');
casper.waitFor(CasperUtils.waits.jsMount)
.wait(300)
.then(CasperUtils.enterCommand('levels'))
.wait(800)
.then(CasperUtils.screenshot.entirePage)
.then(CasperUtils.asserts.selectorContainsText(
'div.modalView.inFront div.toolbar',
'Select a level'
))
.then(CasperUtils.asserts.selectorContainsText(
'div.modalView.inFront div.displayName h3',
'Introduction Sequence'
))
.then(CasperUtils.asserts.selectorContainsText(
'div.modalView.inFront div.seriesView p',
"A nicely paced introduction to the majority of git commands"
))
.then(function() {
this.page.sendEvent('keypress', this.page.event.key.Right);
})
.wait(700)
.then(CasperUtils.screenshot.entirePage)
// Now we have selected the first level
.then(CasperUtils.asserts.selectorContainsText(
'div.modalView.inFront div.seriesView p',
"Introduction to Git Commits"
))
.then(function() {
this.page.sendEvent('keypress', this.page.event.key.Enter);
})
.wait(700)
.then(CasperUtils.screenshot.entirePage)
.then(CasperUtils.asserts.selectorContainsText(
'div.levelNameWrapper',
"Level Introduction to Git Commits"
))
.then(CasperUtils.testDone);
}).run();

View file

@ -1,62 +0,0 @@
var CasperUtils = require('./casperUtils').CasperUtils;
CasperUtils.start(casper,
CasperUtils.getUrl(),
function() {
this.test.assertTitle('Learn Git Branching');
casper.waitFor(CasperUtils.waits.jsMount)
.wait(300)
.then(CasperUtils.enterCommand('levels'))
.wait(800)
.then(CasperUtils.screenshot.entirePage)
.then(CasperUtils.asserts.selectorContainsText(
'div.modalView.inFront div.toolbar',
'Select a level'
))
.then(CasperUtils.asserts.selectorContainsText(
'div.modalView.inFront div.displayName h3',
'Introduction Sequence'
))
.then(CasperUtils.asserts.selectorContainsText(
'div.modalView.inFront div.seriesView p',
"A nicely paced introduction to the majority of git commands"
))
// Hit right 5 times
.then(function() {
this.page.sendEvent('keypress', this.page.event.key.Right);
})
.then(function() {
this.page.sendEvent('keypress', this.page.event.key.Right);
})
.then(function() {
this.page.sendEvent('keypress', this.page.event.key.Right);
})
.then(function() {
this.page.sendEvent('keypress', this.page.event.key.Right);
})
.then(function() {
this.page.sendEvent('keypress', this.page.event.key.Right);
})
.wait(300)
.then(CasperUtils.screenshot.entirePage)
.then(CasperUtils.asserts.selectorContainsText(
'div.modalView.inFront div.displayName h3',
"Push & Pull -- Git Remotes!"
))
.then(CasperUtils.asserts.selectorContainsText(
'div.modalView.inFront div.seriesView p',
"Clone Intro"
))
.then(function() {
this.page.sendEvent('keypress', this.page.event.key.Enter);
})
.wait(700)
.then(CasperUtils.screenshot.entirePage)
.then(CasperUtils.asserts.selectorContainsText(
'div.levelNameWrapper',
"Level Clone Intro"
))
.then(CasperUtils.testDone);
}).run();

View file

@ -1,55 +0,0 @@
var CasperUtils = require('./casperUtils').CasperUtils;
var levels = require('../../levels');
var numLevelSequences = Object.keys(levels.levelSequences).length;
var getLevelIconIDs = function(levelID) {
var level = levels.levelSequences[levelID];
var numLevels = Object.keys(level).length;
// We index at 1 for the level icons
var result = [];
for (var i = 1; i <= numLevels; i++) {
result.push('levelIcon-' + levelID + i);
}
return result;
};
var flattenArray = function(a, b) { return a.concat(b);};
var levelIconIDsForPages = function(start, end) {
return Object.keys(levels.levelSequences).slice(start, end)
.map(getLevelIconIDs)
.reduce(flattenArray);
};
CasperUtils.start(casper,
CasperUtils.getUrlForCommands([
'levels',
]),
function() {
casper.waitFor(CasperUtils.waits.jsMount)
.waitFor(CasperUtils.waits.commandVisible)
.wait(1000)
.then(
CasperUtils.multiAssert(
CasperUtils.asserts.visibleSelectors([
'div.levelDropdownView'
]),
CasperUtils.asserts.visibleIDs(
levelIconIDsForPages(0, 5)
)
)
)
.then(CasperUtils.screenshot.entirePage)
.then(function() {
this.mouse.click('div[data-id="remote"]');
})
.wait(1000)
.then(CasperUtils.asserts.visibleIDs(
levelIconIDsForPages(5, numLevelSequences)
))
.then(CasperUtils.screenshot.entirePage)
.then(CasperUtils.testDone);
}).run();

View file

@ -1,34 +0,0 @@
var CasperUtils = require('./casperUtils').CasperUtils;
CasperUtils.start(casper,
CasperUtils.getUrlForCommands([
'level intro1 --noIntroDialog --noStartCommand',
]),
function() {
casper.waitFor(CasperUtils.waits.jsMount)
.waitFor(CasperUtils.waits.allCommandsFinished)
.then(CasperUtils.asserts.visibleSelectors([
'p.commandLine.finished',
'div.levelNameWrapper'
]))
.then(CasperUtils.screenshot.entirePage)
.then(function() {
this.mouse.click('#show-objective');
})
.wait(1000)
.then(CasperUtils.screenshot.entirePage)
.then(CasperUtils.asserts.visibleSelectors([
'div.inside',
'div.modalTerminal'
]))
.then(function() {
this.test.assertEvalEquals(function() {
return document.querySelector('div.inside > div > p').innerText;
},
"Go ahead and try it out on your own! After this " +
"window closes, make two commits to complete the level"
);
})
.then(CasperUtils.testDone);
}).run();

View file

@ -1,32 +0,0 @@
var CasperUtils = require('./casperUtils').CasperUtils;
CasperUtils.start(casper,
CasperUtils.getUrlForCommands([
'level intro1 --noIntroDialog --noStartCommand',
]),
function() {
casper.waitFor(CasperUtils.waits.jsMount)
.waitFor(CasperUtils.waits.allCommandsFinished)
.then(CasperUtils.asserts.visibleSelectors([
'p.commandLine.finished',
'div.levelNameWrapper'
]))
.then(CasperUtils.screenshot.entirePage)
.then(function() {
this.mouse.click('#show-goal');
})
.wait(1000)
.then(CasperUtils.screenshot.entirePage)
.then(CasperUtils.asserts.visibleSelector('p.helperText'))
.then(function() {
var text = this.evaluate(function() {
return document.querySelector('p.helperText').innerText;
});
this.test.assertEquals(
text,
'You can hide this window with "hide goal"'
);
})
.then(CasperUtils.testDone);
}).run();

View file

@ -1,27 +0,0 @@
var CasperUtils = require('./casperUtils').CasperUtils;
CasperUtils.start(casper,
CasperUtils.getUrlForCommands([
'level intro1 --noIntroDialog --noStartCommand',
'show goal',
'git commit',
'git commit'
]),
function() {
this.test.assertTitle('Learn Git Branching');
casper.waitFor(CasperUtils.waits.jsMount)
.wait(2000)
.then(CasperUtils.screenshot.entirePage)
.waitFor(CasperUtils.waits.allCommandsFinished)
// Have to wait for balls to stop bouncing
.wait(5000)
.wait(5000)
.wait(5000)
.then(CasperUtils.screenshot.entirePage)
.then(CasperUtils.asserts.selectorContainsText(
'div.modalView div.inside h2',
"Great Job!!"
))
.then(CasperUtils.testDone);
}).run();

View file

@ -1,19 +0,0 @@
var CasperUtils = require('./casperUtils').CasperUtils;
CasperUtils.start(casper,
CasperUtils.getUrlForCommands([
'locale fr_FR',
]),
function() {
this.test.assertTitle('Learn Git Branching');
casper.waitFor(CasperUtils.waits.jsMount)
.waitFor(CasperUtils.waits.allCommandsFinished)
.then(CasperUtils.asserts.selectorContainsText(
'span[data-intl="learn-git-branching"]',
"APPRENEZ GIT BRANCHING"
))
.then(CasperUtils.screenshot.entirePage)
.then(CasperUtils.testDone);
}).run();

View file

@ -1,60 +0,0 @@
var CasperUtils = require('./casperUtils').CasperUtils;
/**
* TODO(pcottle) -- find a way to get this from
* LocaleStore but not have the import error
*/
var langLocaleMap = {
en: 'en_US',
zh: 'zh_CN',
ja: 'ja',
ko: 'ko',
es: 'es_AR',
fr: 'fr_FR',
de: 'de_DE',
pt: 'pt_BR'
};
var headerLocaleMap = {
'zh-CN': 'zh_CN',
'zh-TW': 'zh_TW',
'pt-BR': 'pt_BR'
};
CasperUtils.start(casper,
CasperUtils.getUrl(),
function() {
this.test.assertTitle('Learn Git Branching');
casper.waitFor(CasperUtils.waits.jsMount)
.then(function() {
Object.keys(langLocaleMap).forEach(function(lang) {
var locale = langLocaleMap[lang];
this.test.assertEvalEquals(function(lang) {
window.LocaleActions.changeLocaleFromHeader(lang);
return window.LocaleStore.getLocale();
},
locale,
'Testing changing store locale from ' + lang +
' to ' + locale,
{lang: lang}
);
}.bind(this));
})
.then(function() {
Object.keys(headerLocaleMap).forEach(function(header) {
var locale = headerLocaleMap[header];
this.test.assertEvalEquals(function(header) {
window.LocaleActions.changeLocaleFromHeader(header);
return window.LocaleStore.getLocale();
},
locale,
'Testing changing store locale from ' + header +
' to ' + locale,
{header: header}
);
}.bind(this));
})
.then(CasperUtils.testDone);
}).run();

View file

@ -1,20 +0,0 @@
var CasperUtils = require('./casperUtils').CasperUtils;
CasperUtils.start(casper,
CasperUtils.getUrlWithQueryParams({
locale: 'fr_FR',
}),
function() {
this.test.assertTitle('Learn Git Branching');
casper.waitFor(CasperUtils.waits.jsMount)
.then(CasperUtils.asserts.intlKeyReturns(
'learn-git-branching',
"Apprenez Git Branching"
))
.then(CasperUtils.asserts.selectorContainsText(
'span[data-intl="learn-git-branching"]',
"APPRENEZ GIT BRANCHING"
))
.then(CasperUtils.testDone);
}).run();

View file

@ -1,34 +0,0 @@
var CasperUtils = require('./casperUtils').CasperUtils;
CasperUtils.start(casper,
CasperUtils.getUrlForCommands([
'git commit',
]),
function() {
this.test.assertTitle('Learn Git Branching');
casper.waitFor(CasperUtils.waits.jsMount)
.then(CasperUtils.multiAssert(
CasperUtils.asserts.visibleIDs([
'commandLineHistory',
'terminal',
'interfaceWrapper',
'mainVisSpace',
'commandLineBar'
]),
CasperUtils.asserts.visibleSelectors([
'div.visBackgroundColor',
'p.commandLine'
])
))
.waitFor(CasperUtils.waits.allCommandsFinished)
.then(
CasperUtils.asserts.visibleSelectors(['p.finished'])
)
.then(CasperUtils.testDone);
}).run();