2017-11-02 15:40:14 -04:00
|
|
|
import { browser, by, element } from 'protractor';
|
2017-01-27 03:20:51 -05:00
|
|
|
import { SitePage } from './app.po';
|
|
|
|
|
|
|
|
describe('site App', function() {
|
|
|
|
let page: SitePage;
|
|
|
|
|
|
|
|
beforeEach(() => {
|
2017-05-15 17:52:39 -04:00
|
|
|
SitePage.setWindowWidth(1050); // Make the window wide enough to show the SideNav side-by-side.
|
2017-01-27 03:20:51 -05:00
|
|
|
page = new SitePage();
|
2017-02-09 20:22:08 -05:00
|
|
|
page.navigateTo();
|
2017-01-27 03:20:51 -05:00
|
|
|
});
|
|
|
|
|
2017-02-02 15:10:47 -05:00
|
|
|
it('should show features text after clicking "Features"', () => {
|
2017-11-02 15:40:14 -04:00
|
|
|
page.getTopMenuLink('features').click();
|
2017-03-27 11:38:14 -04:00
|
|
|
expect(page.getDocViewerText()).toMatch(/Progressive web apps/i);
|
2017-01-27 03:20:51 -05:00
|
|
|
});
|
2017-02-07 15:57:18 -05:00
|
|
|
|
2017-04-15 03:37:41 -04:00
|
|
|
it('should show the tutorial index page at `/tutorial/` after jitterbugging through features', () => {
|
2017-03-21 03:02:58 -04:00
|
|
|
// check that we can navigate directly to the tutorial page
|
|
|
|
page.navigateTo('tutorial/');
|
|
|
|
expect(page.getDocViewerText()).toMatch(/Tutorial: Tour of Heroes/i);
|
|
|
|
|
|
|
|
// navigate to a different page
|
2017-11-02 15:40:14 -04:00
|
|
|
page.getTopMenuLink('features').click();
|
2017-05-24 23:08:21 -04:00
|
|
|
expect(page.getDocViewerText()).toMatch(/Progressive web apps/i);
|
2017-03-21 03:02:58 -04:00
|
|
|
|
2017-04-15 03:37:41 -04:00
|
|
|
// Show the menu
|
2017-03-29 17:13:40 -04:00
|
|
|
page.docsMenuLink.click();
|
|
|
|
|
2017-06-08 18:46:32 -04:00
|
|
|
// Tutorial folder should still be expanded because this test runs in wide mode
|
2017-03-29 17:13:40 -04:00
|
|
|
// Navigate to the tutorial introduction via a link in the sidenav
|
|
|
|
page.getNavItem(/introduction/i).click();
|
2017-03-21 03:02:58 -04:00
|
|
|
expect(page.getDocViewerText()).toMatch(/Tutorial: Tour of Heroes/i);
|
|
|
|
});
|
|
|
|
|
2017-03-22 16:24:40 -04:00
|
|
|
it('should render `{@example}` dgeni tags as `<code-example>` elements with HTML escaped content', () => {
|
|
|
|
page.navigateTo('guide/component-styles');
|
|
|
|
const codeExample = element.all(by.css('code-example')).first();
|
2017-03-26 16:32:29 -04:00
|
|
|
expect(page.getInnerHtml(codeExample)).toContain('<h1>Tour of Heroes</h1>');
|
2017-03-22 16:24:40 -04:00
|
|
|
});
|
2017-03-13 21:08:23 -04:00
|
|
|
|
2017-06-01 17:03:10 -04:00
|
|
|
describe('scrolling to the top', () => {
|
|
|
|
it('should scroll to the top when navigating to another page', () => {
|
2017-10-12 05:59:51 -04:00
|
|
|
page.navigateTo('guide/security');
|
2017-11-02 15:40:14 -04:00
|
|
|
browser.sleep(1000); // Wait for initial async scroll-to-top after `onDocRendered`.
|
|
|
|
|
2017-06-01 17:03:10 -04:00
|
|
|
page.scrollToBottom();
|
|
|
|
page.getScrollTop().then(scrollTop => expect(scrollTop).toBeGreaterThan(0));
|
|
|
|
|
2017-10-12 05:59:51 -04:00
|
|
|
page.navigateTo('api');
|
2017-06-01 17:03:10 -04:00
|
|
|
page.getScrollTop().then(scrollTop => expect(scrollTop).toBe(0));
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should scroll to the top when navigating to the same page', () => {
|
2017-10-12 05:59:51 -04:00
|
|
|
page.navigateTo('guide/security');
|
2017-11-02 15:40:14 -04:00
|
|
|
browser.sleep(1000); // Wait for initial async scroll-to-top after `onDocRendered`.
|
|
|
|
|
2017-06-01 17:03:10 -04:00
|
|
|
page.scrollToBottom();
|
|
|
|
page.getScrollTop().then(scrollTop => expect(scrollTop).toBeGreaterThan(0));
|
|
|
|
|
2017-10-12 05:59:51 -04:00
|
|
|
page.navigateTo('guide/security');
|
2017-06-01 17:03:10 -04:00
|
|
|
page.getScrollTop().then(scrollTop => expect(scrollTop).toBe(0));
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2017-04-19 04:27:45 -04:00
|
|
|
describe('tutorial docs', () => {
|
|
|
|
it('should not render a paragraph element inside the h1 element', () => {
|
|
|
|
page.navigateTo('tutorial/toh-pt1');
|
|
|
|
expect(element(by.css('h1 p')).isPresent()).toBeFalsy();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2017-10-18 11:50:00 -04:00
|
|
|
// TODO(https://github.com/angular/angular/issues/19785): Activate this again
|
|
|
|
// once it is no more flaky.
|
2017-10-19 08:58:27 -04:00
|
|
|
describe('google analytics', () => {
|
2017-03-13 21:08:23 -04:00
|
|
|
|
2017-10-19 08:58:27 -04:00
|
|
|
it('should call ga with initial URL', done => {
|
|
|
|
let path: string;
|
|
|
|
page.navigateTo('api');
|
|
|
|
page.locationPath()
|
|
|
|
.then(p => path = p)
|
|
|
|
.then(() => page.ga().then(calls => {
|
|
|
|
// The last call (length-1) will be the `send` command
|
|
|
|
// The second to last call (length-2) will be the command to `set` the page url
|
|
|
|
expect(calls[calls.length - 2]).toEqual(['set', 'page', path]);
|
2017-03-13 21:08:23 -04:00
|
|
|
done();
|
2017-10-19 08:58:27 -04:00
|
|
|
}));
|
2017-03-13 21:08:23 -04:00
|
|
|
});
|
|
|
|
|
2017-10-19 08:58:27 -04:00
|
|
|
it('should call ga with new URL on navigation', done => {
|
2017-03-13 21:08:23 -04:00
|
|
|
let path: string;
|
2017-11-02 15:40:14 -04:00
|
|
|
page.getTopMenuLink('features').click();
|
2017-03-13 21:08:23 -04:00
|
|
|
page.locationPath()
|
|
|
|
.then(p => path = p)
|
|
|
|
.then(() => page.ga().then(calls => {
|
2017-10-19 08:58:27 -04:00
|
|
|
// The last call (length-1) will be the `send` command
|
|
|
|
// The second to last call (length-2) will be the command to `set` the page url
|
|
|
|
expect(calls[calls.length - 2]).toEqual(['set', 'page', path]);
|
2017-03-13 21:08:23 -04:00
|
|
|
done();
|
|
|
|
}));
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2017-09-08 06:57:33 -04:00
|
|
|
describe('search', () => {
|
|
|
|
it('should find pages when searching by a partial word in the title', () => {
|
|
|
|
page.enterSearch('ngCont');
|
|
|
|
expect(page.getSearchResults().map(link => link.getText())).toContain('NgControl');
|
2017-09-09 13:15:46 -04:00
|
|
|
page.enterSearch('accessor');
|
|
|
|
expect(page.getSearchResults().map(link => link.getText())).toContain('ControlValueAccessor');
|
2017-09-08 06:57:33 -04:00
|
|
|
});
|
|
|
|
});
|
2017-10-12 05:59:25 -04:00
|
|
|
|
|
|
|
describe('404 page', () => {
|
|
|
|
it('should search the index for words found in the url', () => {
|
|
|
|
page.navigateTo('http/router');
|
|
|
|
expect(page.getSearchResults().map(link => link.getText())).toContain('Http');
|
|
|
|
expect(page.getSearchResults().map(link => link.getText())).toContain('Router');
|
|
|
|
});
|
|
|
|
});
|
2017-01-27 03:20:51 -05:00
|
|
|
});
|