aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulie2014-01-06 15:13:57 -0800
committerJulie2014-01-08 13:07:58 -0800
commitb6c42d5e8155edc9013bd531f553c278ce37c3c8 (patch)
tree225bbc1e0522b42b2cdd9bccfe36452ad88ad3d4
parent1c045f1b463cf8c2d0c470fc6e44170997e85d89 (diff)
downloadangular.js-b6c42d5e8155edc9013bd531f553c278ce37c3c8.tar.bz2
feat(docs): adding the <doc:protractor> ngdoc-tag
This is the first step in migrating tests from <doc:scenario> to <doc:protractor>. In-documentation examples with doc:protractor sections will have their contents output to a tab on the docs site as well as output to a standalone test file in build/docs/ptore2e.
-rw-r--r--docs/src/example.js19
-rwxr-xr-xdocs/src/gen-docs.js6
-rw-r--r--docs/src/ngdoc.js24
-rw-r--r--src/ng/directive/ngEventDirs.js10
4 files changed, 49 insertions, 10 deletions
diff --git a/docs/src/example.js b/docs/src/example.js
index 9471b3fa..7a32ce04 100644
--- a/docs/src/example.js
+++ b/docs/src/example.js
@@ -6,7 +6,8 @@ var makeUnique = {
'script.js': true,
'unit.js': true,
'spec.js': true,
- 'scenario.js': true
+ 'scenario.js': true,
+ 'protractorTest.js': true
}
function ids(list) {
@@ -14,7 +15,7 @@ function ids(list) {
};
-exports.Example = function(scenarios) {
+exports.Example = function(scenarios, protractorTests) {
this.module = '';
this.deps = ['angular.js'];
this.html = [];
@@ -24,6 +25,8 @@ exports.Example = function(scenarios) {
this.unit = [];
this.scenario = [];
this.scenarios = scenarios;
+ this.protractorTest = [];
+ this.protractorTests = protractorTests;
}
exports.Example.prototype.setModule = function(module) {
@@ -44,6 +47,10 @@ exports.Example.prototype.addSource = function(name, content) {
var ext = name == 'scenario.js' ? 'scenario' : name.split('.')[1],
id = name;
+ if (name == 'protractorTest.js') {
+ ext = 'protractorTest';
+ }
+
if (makeUnique[name] && usedIds[id]) {
id = name + '-' + (seqCount++);
}
@@ -56,6 +63,9 @@ exports.Example.prototype.addSource = function(name, content) {
if (ext == 'scenario') {
this.scenarios.push(content);
}
+ if (ext == 'protractorTest') {
+ this.protractorTests.push(content);
+ }
};
exports.Example.prototype.enableAnimations = function() {
@@ -92,6 +102,7 @@ exports.Example.prototype.toHtmlEdit = function() {
out.push(' source-edit-json="' + ids(this.json) + '"');
out.push(' source-edit-unit="' + ids(this.unit) + '"');
out.push(' source-edit-scenario="' + ids(this.scenario) + '"');
+ out.push(' source-edit-protractor="' + ids(this.protractorTest) + '"');
out.push('></div>\n');
return out.join('');
};
@@ -107,6 +118,7 @@ exports.Example.prototype.toHtmlTabs = function() {
htmlTabs(this.json);
htmlTabs(this.unit);
htmlTabs(this.scenario);
+ htmlTabs(this.protractorTest);
out.push('</div>');
return out.join('');
@@ -119,7 +131,8 @@ exports.Example.prototype.toHtmlTabs = function() {
if (name === 'index.html') {
wrap = ' ng-html-wrap="' + self.module + ' ' + self.deps.join(' ') + '"';
}
- if (name == 'scenario.js') name = 'End to end test';
+ if (name == 'scenario.js') name = 'ngScenario e2e test';
+ if (name == 'protractorTest.js') name = 'Protractor e2e test';
out.push(
'<div class="tab-pane" title="' + name + '">\n' +
diff --git a/docs/src/gen-docs.js b/docs/src/gen-docs.js
index abb001b5..9fc5f8db 100755
--- a/docs/src/gen-docs.js
+++ b/docs/src/gen-docs.js
@@ -18,6 +18,8 @@ writer.makeDir('build/docs/', true).then(function() {
}).then(function() {
return writer.makeDir('build/docs/components/font-awesome');
}).then(function() {
+ return writer.makeDir('build/docs/e2etests');
+}).then(function() {
console.log('Generating AngularJS Reference Documentation...');
return reader.collect();
}).then(function generateHtmlDocPartials(docs_) {
@@ -53,6 +55,10 @@ writer.makeDir('build/docs/', true).then(function() {
var id = doc.id.replace('angular.Module', 'angular.IModule');
fileFutures.push(writer.output('partials/' + doc.section + '/' + id + '.html', doc.html()));
+ // If it has a sample Protractor test, output that as well.
+ if (doc.protractorTests.length) {
+ fileFutures.push(writer.output('ptore2e/' + doc.section + '/' + id + '_test.js', ngdoc.writeProtractorTest(doc)));
+ }
});
ngdoc.checkBrokenLinks(docs);
diff --git a/docs/src/ngdoc.js b/docs/src/ngdoc.js
index 37f5aeaf..c009c950 100644
--- a/docs/src/ngdoc.js
+++ b/docs/src/ngdoc.js
@@ -35,6 +35,7 @@ var lookupMinerrMsg = function (doc) {
exports.trim = trim;
exports.metadata = metadata;
exports.scenarios = scenarios;
+exports.writeProtractorTest = writeProtractorTest;
exports.merge = merge;
exports.checkBrokenLinks = checkBrokenLinks;
exports.Doc = Doc;
@@ -155,6 +156,7 @@ function Doc(text, file, line) {
this.line = line;
}
this.scenarios = this.scenarios || [];
+ this.protractorTests = this.protractorTests || [];
this.requires = this.requires || [];
this.param = this.param || [];
this.properties = this.properties || [];
@@ -292,7 +294,7 @@ Doc.prototype = {
replace(/<example(?:\s+module="([^"]*)")?(?:\s+deps="([^"]*)")?(\s+animations="true")?>([\s\S]*?)<\/example>/gmi,
function(_, module, deps, animations, content) {
- var example = new Example(self.scenarios);
+ var example = new Example(self.scenarios, self.protractorTests);
if(animations) {
example.enableAnimations();
example.addDeps('angular-animate.js');
@@ -329,7 +331,7 @@ Doc.prototype = {
}).
replace(/^<doc:example(\s+[^>]*)?>([\s\S]*)<\/doc:example>/mi, function(_, attrs, content) {
var html, script, scenario,
- example = new Example(self.scenarios);
+ example = new Example(self.scenarios, self.protractorTests);
example.setModule((attrs||'module=""').match(/^\s*module=["'](.*)["']\s*$/)[1]);
content.
@@ -347,6 +349,8 @@ Doc.prototype = {
}).
replace(/(<doc:scenario>)([\s\S]*)(<\/doc:scenario>)/mi, function(_, before, content){
example.addSource('scenario.js', content);
+ }).replace(/(<doc:protractor>)([\s\S]*)(<\/doc:protractor>)/mi, function(_, before, content){
+ example.addSource('protractorTest.js', content);
});
return placeholder(example.toHtml());
@@ -1106,6 +1110,22 @@ function scenarios(docs){
}
}
+function writeProtractorTest(doc){
+ var lines = [];
+ lines.push('describe("' + doc.section + '/' + doc.id + '", function() {');
+ lines.push(' beforeEach(function() {');
+ lines.push(' browser.get("index-nocache.html#!/' + doc.section + '/' + doc.id + '");');
+ lines.push(' });');
+ lines.push('');
+ doc.protractorTests.forEach(function(test){
+ lines.push(indentCode(trim(test), 2));
+ lines.push('');
+ });
+ lines.push('});');
+ lines.push('');
+ return lines.join('\n');
+}
+
//////////////////////////////////////////////////////////
function metadata(docs){
diff --git a/src/ng/directive/ngEventDirs.js b/src/ng/directive/ngEventDirs.js
index e45f5cb7..03da8bc4 100644
--- a/src/ng/directive/ngEventDirs.js
+++ b/src/ng/directive/ngEventDirs.js
@@ -20,13 +20,13 @@
</button>
count: {{count}}
</doc:source>
- <doc:scenario>
+ <doc:protractor>
it('should check ng-click', function() {
- expect(binding('count')).toBe('0');
- element('.doc-example-live :button').click();
- expect(binding('count')).toBe('1');
+ expect(element(by.binding('count')).getText()).toMatch('0');
+ element(by.css('.doc-example-live button')).click();
+ expect(element(by.binding('count')).getText()).toMatch('1');
});
- </doc:scenario>
+ </doc:protractor>
</doc:example>
*/
/*