diff --git a/.travis.yml b/.travis.yml
index 58c8acfb7e..e6c700f26d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -12,7 +12,7 @@ env:
- CHROME_BIN=chromium-browser
- LATEST_RELEASE=4.0.0
# Temporarily disabled until there is a new release branch for 4.0.0
- # - LATEST_RELEASE_BRANCH=2.4.x
+ # - LATEST_RELEASE_BRANCH=2.4.xk
- TASK_FLAGS="--dgeni-log=warn"
matrix:
# current angular release jobs
diff --git a/public/doc-shredder/_test/.gitignore b/public/doc-shredder/_test/.gitignore
new file mode 100644
index 0000000000..52ed488544
--- /dev/null
+++ b/public/doc-shredder/_test/.gitignore
@@ -0,0 +1,18 @@
+lib-cov
+*.seed
+*.log
+*.csv
+*.dat
+*.out
+*.pid
+*.gz
+test_fragments
+
+pids
+logs
+results
+
+npm-debug.log
+node_modules
+
+build
\ No newline at end of file
diff --git a/public/doc-shredder/test/README.md b/public/doc-shredder/_test/README.md
similarity index 100%
rename from public/doc-shredder/test/README.md
rename to public/doc-shredder/_test/README.md
diff --git a/public/doc-shredder/test/gulpfile.js b/public/doc-shredder/_test/gulpfile.js
similarity index 100%
rename from public/doc-shredder/test/gulpfile.js
rename to public/doc-shredder/_test/gulpfile.js
diff --git a/public/doc-shredder/test/test_jade/guides/setupAlt2.jade b/public/doc-shredder/_test/test_jade/guides/setupAlt2.jade
similarity index 100%
rename from public/doc-shredder/test/test_jade/guides/setupAlt2.jade
rename to public/doc-shredder/_test/test_jade/guides/setupAlt2.jade
diff --git a/public/doc-shredder/test/test_jade/setupAlt.jade b/public/doc-shredder/_test/test_jade/setupAlt.jade
similarity index 100%
rename from public/doc-shredder/test/test_jade/setupAlt.jade
rename to public/doc-shredder/_test/test_jade/setupAlt.jade
diff --git a/public/doc-shredder/_test/test_source/app.js b/public/doc-shredder/_test/test_source/app.js
new file mode 100644
index 0000000000..52b5663ad4
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/app.js
@@ -0,0 +1,24 @@
+// #docregion all
+// #docregion log ... everything else ignored.
+/**
+ * @description This function logs a string.
+ */
+function log() {
+ console.log('Logging.');
+}
+// #enddocregion
+
+/**
+ * @description My application
+ */
+var myApp = {
+ // #docregion greet
+ /**
+ * @description Display a greeting
+ * @param {string} name The name of the person to greet
+ */
+ greet: function(name) {
+ console.log('hello ' + name);
+ }
+ // #enddocregion
+};
\ No newline at end of file
diff --git a/public/doc-shredder/_test/test_source/app.ts b/public/doc-shredder/_test/test_source/app.ts
new file mode 100644
index 0000000000..b8607bf62c
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/app.ts
@@ -0,0 +1,22 @@
+// #docregion
+// #docregion import
+import {Component, View, bootstrap} from 'angular2/angular2';
+// #enddocregion
+
+// #docregion class-w-annotations
+@Component({
+ selector: 'my-app'
+})
+@View({
+ template: '
My First Angular 2 App
'
+})
+// #docregion class
+class AppComponent {
+}
+// #enddocregion
+// #enddocregion
+
+// #docregion bootstrap
+bootstrap(AppComponent);
+// #enddocregion
+// #enddocregion
\ No newline at end of file
diff --git a/public/doc-shredder/_test/test_source/app2.ts b/public/doc-shredder/_test/test_source/app2.ts
new file mode 100644
index 0000000000..336b35219e
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/app2.ts
@@ -0,0 +1,22 @@
+// #docregion
+// #docregion import
+import {Component, View, bootstrap} from 'angular2/angular2';
+// #enddocregion
+
+//#docregion class-w-annotations
+@Component({
+ selector: 'my-app'
+})
+@View({
+ template: 'Hello, Angular 2!
'
+})
+//#docregion class
+class MyAppComponent {
+}
+//#enddocregion
+//#enddocregion
+
+//#docregion bootstrap
+bootstrap(MyAppComponent);
+//#enddocregion
+//#enddocregion
diff --git a/public/doc-shredder/_test/test_source/do-not-read.js b/public/doc-shredder/_test/test_source/do-not-read.js
new file mode 100644
index 0000000000..de18a65e84
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/do-not-read.js
@@ -0,0 +1,5 @@
+/**
+ * @description
+ * This file should not have documents read from it.
+ *
+ */
\ No newline at end of file
diff --git a/public/doc-shredder/_test/test_source/first.html b/public/doc-shredder/_test/test_source/first.html
new file mode 100644
index 0000000000..b85c224a59
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/first.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/doc-shredder/_test/test_source/gettingstarted/js/index.html b/public/doc-shredder/_test/test_source/gettingstarted/js/index.html
new file mode 100644
index 0000000000..432b17eb52
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/gettingstarted/js/index.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/doc-shredder/_test/test_source/gettingstarted/js/main.js b/public/doc-shredder/_test/test_source/gettingstarted/js/main.js
new file mode 100644
index 0000000000..b752be57b4
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/gettingstarted/js/main.js
@@ -0,0 +1,17 @@
+// #docregion
+function AppComponent() {}
+
+AppComponent.annotations = [
+ new angular.ComponentAnnotation({
+ selector: 'my-app'
+ }),
+ new angular.ViewAnnotation({
+ template: 'My first Angular 2 App
'
+ })
+];
+
+// #docregion bootstrap
+document.addEventListener('DOMContentLoaded', function() {
+ angular.bootstrap(AppComponent);
+});
+// #enddocregion
\ No newline at end of file
diff --git a/public/doc-shredder/_test/test_source/gettingstarted/protractor-spec.js b/public/doc-shredder/_test/test_source/gettingstarted/protractor-spec.js
new file mode 100644
index 0000000000..2a7633774e
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/gettingstarted/protractor-spec.js
@@ -0,0 +1,20 @@
+// protractor-spec.js
+describe('Protractor quick start test', function() {
+
+ // #docregion javascript
+ it('should display Alice with JavaScript', function() {
+ browser.get('gettingstarted/js/index.html');
+ });
+ // #enddocregion
+
+ // #docregion typescript
+ it('should display Alice with TypeScrip', function() {
+ browser.get('gettingstarted/ts/index.html');
+ });
+ // #enddocregion
+
+ afterEach(function() {
+ expect(element(by.id('output')).getText()).toEqual('My first Angular 2 App');
+ });
+});
+
diff --git a/public/doc-shredder/_test/test_source/gettingstarted/ts/index.html b/public/doc-shredder/_test/test_source/gettingstarted/ts/index.html
new file mode 100644
index 0000000000..b44d34d016
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/gettingstarted/ts/index.html
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/doc-shredder/_test/test_source/gettingstarted/ts/main.js b/public/doc-shredder/_test/test_source/gettingstarted/ts/main.js
new file mode 100644
index 0000000000..77c82e8254
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/gettingstarted/ts/main.js
@@ -0,0 +1,33 @@
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") return Reflect.decorate(decorators, target, key, desc);
+ switch (arguments.length) {
+ case 2: return decorators.reduceRight(function(o, d) { return (d && d(o)) || o; }, target);
+ case 3: return decorators.reduceRight(function(o, d) { return (d && d(target, key)), void 0; }, void 0);
+ case 4: return decorators.reduceRight(function(o, d) { return (d && d(target, key, o)) || o; }, desc);
+ }
+};
+var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+};
+// #docregion
+// #docregion import
+var angular2_1 = require('angular2/angular2');
+// #enddocregion
+var AppComponent = (function () {
+ function AppComponent() {
+ }
+ AppComponent = __decorate([
+ angular2_1.Component({
+ selector: 'my-app'
+ }),
+ angular2_1.View({
+ template: 'My first Angular 2 App
'
+ }),
+ __metadata('design:paramtypes', [])
+ ], AppComponent);
+ return AppComponent;
+})();
+// #docregion bootstrap
+angular2_1.bootstrap(AppComponent);
+// #enddocregion
+//# sourceMappingURL=main.js.map
\ No newline at end of file
diff --git a/public/doc-shredder/_test/test_source/gettingstarted/ts/main.js.map b/public/doc-shredder/_test/test_source/gettingstarted/ts/main.js.map
new file mode 100644
index 0000000000..a03477dbb1
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/gettingstarted/ts/main.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":["AppComponent","AppComponent.constructor"],"mappings":";;;;;;;;;;;AAEA,AAFA,UAAU;AACV,iBAAiB;AACjB,yBAAyC,mBAAmB,CAAC,CAAA;AAG7D,AAFA,aAAa;;IAEbA;IAOAC,CAACA;IAPDD;QAACA,oBAASA,CAACA;YACTA,QAAQA,EAAEA,QAAQA;SACnBA,CAACA;QACDA,eAAIA,CAACA;YACJA,QAAQA,EAAEA,6CAA6CA;SACxDA,CAACA;;qBAEDA;IAADA,mBAACA;AAADA,CAACA,AAPD,IAOC;AAGD,AADA,oBAAoB;AACpB,oBAAS,CAAC,YAAY,CAAC,CAAC;AACxB,aAAa"}
\ No newline at end of file
diff --git a/public/doc-shredder/_test/test_source/gettingstarted/ts/main.ts b/public/doc-shredder/_test/test_source/gettingstarted/ts/main.ts
new file mode 100644
index 0000000000..7cf1b4659a
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/gettingstarted/ts/main.ts
@@ -0,0 +1,16 @@
+// #docregion
+// #docregion import
+import {Component, View, bootstrap} from 'angular2/angular2';
+// #enddocregion
+
+@Component({
+ selector: 'my-app'
+})
+@View({
+ template: 'My first Angular 2 App
'
+})
+class AppComponent {
+}
+// #docregion bootstrap
+bootstrap(AppComponent);
+// #enddocregion
diff --git a/public/doc-shredder/_test/test_source/sub1/foo/script.js b/public/doc-shredder/_test/test_source/sub1/foo/script.js
new file mode 100644
index 0000000000..8cc7201a66
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/sub1/foo/script.js
@@ -0,0 +1,11 @@
+// #docregion
+/**
+ * @description This function returns a string.
+ *
+ * @returns {string} This string has the value 'Hello World'.
+ */
+
+
+function helloWorld() {
+ return 'Hello World';
+}
\ No newline at end of file
diff --git a/public/doc-shredder/_test/test_source/sub1/script.2.js b/public/doc-shredder/_test/test_source/sub1/script.2.js
new file mode 100644
index 0000000000..a76e425917
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/sub1/script.2.js
@@ -0,0 +1,9 @@
+// #docregion
+/**
+ * @description This function returns a string.
+ *
+ * @returns {string} This string has the value 'Hello World'.
+ */
+function helloWorld() {
+ return 'Hello World';
+}
\ No newline at end of file
diff --git a/public/doc-shredder/_test/test_source/sub1/script.js b/public/doc-shredder/_test/test_source/sub1/script.js
new file mode 100644
index 0000000000..8cc7201a66
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/sub1/script.js
@@ -0,0 +1,11 @@
+// #docregion
+/**
+ * @description This function returns a string.
+ *
+ * @returns {string} This string has the value 'Hello World'.
+ */
+
+
+function helloWorld() {
+ return 'Hello World';
+}
\ No newline at end of file
diff --git a/public/doc-shredder/_test/test_source/sub1/script.ts b/public/doc-shredder/_test/test_source/sub1/script.ts
new file mode 100644
index 0000000000..1e2b501fc2
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/sub1/script.ts
@@ -0,0 +1,10 @@
+// #docregion
+/**
+ * @description This function returns a string.
+ *
+ * @returns {string} This string has the value 'Hello World'.
+ */
+// #docregion code2
+function helloWorld() {
+ return 'Hello World';
+}
\ No newline at end of file
diff --git a/public/doc-shredder/_test/test_source/sub1/second.html b/public/doc-shredder/_test/test_source/sub1/second.html
new file mode 100644
index 0000000000..55449e0cde
--- /dev/null
+++ b/public/doc-shredder/_test/test_source/sub1/second.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/public/doc-shredder/test/xref-frag-to-jade.html b/public/doc-shredder/_test/xref-frag-to-jade.html
similarity index 100%
rename from public/doc-shredder/test/xref-frag-to-jade.html
rename to public/doc-shredder/_test/xref-frag-to-jade.html
diff --git a/public/doc-shredder/test/xref-jade-to-frag.html b/public/doc-shredder/_test/xref-jade-to-frag.html
similarity index 100%
rename from public/doc-shredder/test/xref-jade-to-frag.html
rename to public/doc-shredder/_test/xref-jade-to-frag.html
diff --git a/public/doc-shredder/test/xref-jade.json b/public/doc-shredder/_test/xref-jade.json
similarity index 100%
rename from public/doc-shredder/test/xref-jade.json
rename to public/doc-shredder/_test/xref-jade.json